标签: asp.net-mvc-3

Javascript,Razor和Escape字符.像撇号一样

我在我的MVC3项目中使用Razor.而且我也在使用FullCalendar JQuery插件.因此,当我试图填充数组时,它运行良好.除了一件事.如果s.Name包含撇号,它就会像'我想要的那样渲染.我尝试使用不同的方法,如Encode和Decode,甚至MvcHtmlString.Create,结果总是一样的.

这是代码片段:

<head>
    <script type='text/javascript'>
       $(document).ready(function () {        
        $('#calendar').fullCalendar({
            header: {
                left: '',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            month: 5,
            year: 2011,
            editable: false,
            events: [
            @foreach (var s in ViewBag.Sessions)
            {
                @:{
                @: title: '@s.Name',
                @: start: new Date(@s.Starts.Year, @s.Starts.Month-1, @s.Starts.Day),
                @: end: new Date(@s.Ends.Year, @s.Ends.Month-1, @s.Ends.Day)
                @:},
            }
                   ]
        });
    });
</script>
Run Code Online (Sandbox Code Playgroud)

javascript jquery jquery-plugins razor asp.net-mvc-3

58
推荐指数
4
解决办法
5万
查看次数

Autofac - InstancePerHttpRequest与InstancePerLifetimeScope

这两个范围有什么区别?

我正在Module每层构建(存储库,服务,MVC应用程序),但为了让InstancePerHttpRequest您需要Autofac.Mvc程序集.

我应该在我的存储库和服务层中使用哪个范围?

c# dependency-injection autofac asp.net-mvc-3

58
推荐指数
2
解决办法
3万
查看次数

我们可以在RedirectToAction中将模型作为参数传递吗?

我想知道,有任何技术,所以我们可以Model作为参数传递RedirectToAction

例如:

public class Student{
    public int Id{get;set;}
    public string Name{get;set;}
}
Run Code Online (Sandbox Code Playgroud)

调节器

public class StudentController : Controller
{
    public ActionResult FillStudent()
    {
        return View();
    }
    [HttpPost]
    public ActionResult FillStudent(Student student1)
    {
        return RedirectToAction("GetStudent","Student",new{student=student1});
    }
    public ActionResult GetStudent(Student student)
    {
        return View();
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题 - 我可以在RedirectToAction中传递学生模型吗?

asp.net-mvc controller asp.net-mvc-3 asp.net-mvc-4

58
推荐指数
3
解决办法
9万
查看次数

IIS上的ASP.NET MVC3和Windows Auth会重定向到/ Account/Login

我正在运行MVC3和Windows身份验证Web应用程序.当我部署到IIS6时,它运行良好,直到我点击需要身份验证的页面.然后,当我在我的应用程序中没有跟踪它并且我的web.config配置为windows auth时,它会自动重定向到/ Account/Login.

有任何想法吗?

这是我的整个web.config文件:http://pastie.org/1568510

asp.net-mvc iis-6 windows-authentication sharp-architecture asp.net-mvc-3

57
推荐指数
4
解决办法
3万
查看次数

用于直接文本输出的MVC 3 Razor语法?

使用Razor如何/可以编写直接文本而不是将其包装在某种类型的html标签中?

示例(这可以工作,但会添加额外的span标记):

@{ var foo = true; }
@if(foo) { <span>Yes</span> } else { <span>No</span> }
Run Code Online (Sandbox Code Playgroud)

我想让我的最终标记尽可能干净,没有额外的标签.

谢谢!

asp.net-mvc-3

57
推荐指数
2
解决办法
4万
查看次数

手动调用ModelState验证

我正在使用ASP.NET MVC 3代码优先,我已经将验证数据注释添加到我的模型中.这是一个示例模型:

public class Product
{
    public int ProductId { get; set; }

    [Required(ErrorMessage = "Please enter a name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Please enter a description")]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }

    [Required(ErrorMessage = "Please provide a logo")]
    public string Logo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

在我的网站中,我有一个创建新产品的多步骤过程 - 第1步输入产品详细信息,第2步其他信息等.在每个步骤之间我将每个对象(即Product对象)存储在Session中,因此用户可以返回到该过程的那个阶段并修改他们输入的数据.

在每个屏幕上,我都有客户端验证,使用新的jQuery验证.

最后阶段是确认屏幕,之后将在数据库中创建产品.但是,因为用户可以在各个阶段之间跳转,所以我需要验证对象(产品和其他一些对象)以检查它们是否已正确完成数据.

有没有办法以编程方式在具有数据注释的对象上调用ModelState验证?我不想浏览对象上的每个属性并进行手动验证.

如果能够更轻松地使用ASP.NET MVC 3的模型验证功能,我愿意接受如何改进此过程的建议.

.net c# asp.net-mvc asp.net-mvc-validation asp.net-mvc-3

57
推荐指数
2
解决办法
4万
查看次数

处理ajax调用中的会话超时

我正在使用jquery对asp.net mvc控制器动作进行ajax调用:

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult GetWeek(string startDay)
        {
            var daysOfWeek = CompanyUtility.GetWeek(User.Company.Id, startDay);
            return Json(daysOfWeek);
        }
Run Code Online (Sandbox Code Playgroud)

当会话超时时,此调用将失败,因为User对象存储在会话中.我创建了一个自定义authorize属性,以检查会话是否丢失并重定向到登录页面.这适用于页面请求,但它不适用于ajax请求,因为您无法从ajax请求重定向:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
    public class AuthorizeUserAttribute : AuthorizeAttribute
    {
        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            if (!httpContext.Request.IsAjaxRequest())
            {//validate http request.
                if (!httpContext.Request.IsAuthenticated
                    || httpContext.Session["User"] == null)
                {
                    FormsAuthentication.SignOut();
                    httpContext.Response.Redirect("~/?returnurl=" + httpContext.Request.Url.ToString());
                    return false;
                }
            }
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在另一个线程上读到,当用户未经过身份验证并且你发出ajax请求时,你应该将状态代码设置为401(未授权),然后在js中检查它并将它们重定向到登录页面.但是,我不能让这个工作:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            if (Request.IsAjaxRequest() && (!Request.IsAuthenticated || User == null))
            {
                filterContext.RequestContext.HttpContext.Response.StatusCode = 401;
            }
            else
            {
                base.OnActionExecuting(filterContext);
            } …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery authorize-attribute asp.net-mvc-3

56
推荐指数
4
解决办法
7万
查看次数

IE提示从服务器打开或保存json结果

兼容模式下的Internet Explorer以ajax回调方法从服务器获取数据,如果我想保存数据或打开,则会弹出一个对话框.如何摆脱它?

客户说:

$.ajax({
        type:'POST',
        data: $("#UIdlgHolder > form").serialize(),
        url: $("#UIdlgHolder > form").attr("action"),
        success: function (data, textStatus, jqXHR) {
            {
                alert(data.message);
            }
}
Run Code Online (Sandbox Code Playgroud)

服务器答案:

return new JsonResult { Data = new { result = false, message = "Yay!" } };
Run Code Online (Sandbox Code Playgroud)

jquery internet-explorer asp.net-mvc-3

56
推荐指数
3
解决办法
11万
查看次数

asp.net mvc的Ninject和Filter属性的依赖注入

我正在为asp.net mvc 3编写自定义授权过滤器.我需要向用户服务注入类,但我不知道如何做到这一点.

public class AuthorizeAttribute : FilterAttribute, IAuthorizationFilter
{
    private IUserService userService;
    private string[] roles;

    public AuthorizeAttribute(params string[] roles)
    {
        this.roles = roles;
    }

    public void OnAuthorization(AuthorizationContext filterContext)
    {
        throw new NotImplementedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用ninject进行依赖注入.我不想使用Factory或服务定位器模式.

我的绑定在global.acsx中看起来像这样:

    internal class SiteModule : NinjectModule
    {
        public override void Load()
        {
            Bind<IUserService>().To<UserService>();
        }
    }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc ninject asp.net-mvc-3

56
推荐指数
4
解决办法
2万
查看次数

如何在IIS中为ASP.NET MVC启用HTTP PUT和DELETE?

我使用HTTP PUTDELETE我的ASP.NET MVC3应用.当我在本地运行时,每件事都能正常工作; 但是当我将应用程序发布到服务器时,这些方法不起作用.

是否有任何特殊设置可以使Web服务器支持PUTDELETE请求?我正在使用IIS 7.5的共享主机.

更新:

我启用PUTDELETE请求IIS manager.PUT命令工作正常.但DELETE仍然行不通.我创建请求jQuery:

我在这个页面:

http://domain.com/dashboard/edit-site/103323/links/
Run Code Online (Sandbox Code Playgroud)

我的ajax电话是:

$.ajax({
    // url: same as page-url,
    cache: false,
    type: 'DELETE',
    data: { linkid: $(link).data("linkid") },
    beforeSend: function () {
        // doing something in UI
    },
    complete: function () {
        // doing something in UI
    },
    success: function (data) {
        // doing something in UI
    },
    error: function () { …
Run Code Online (Sandbox Code Playgroud)

c# http-put iis-7.5 asp.net-mvc-3 http-delete

56
推荐指数
3
解决办法
6万
查看次数