为什么Request.IsAjaxRequest()在ASP.NET MVC 3中不起作用?
发布时间:2020-12-16 06:37:04 所属栏目:asp.Net 来源:网络整理
导读:我正在使用Razor创建一个新项目asp.net mvc3,并希望将LogOn转换为ajax请求. HTML @using (Ajax.BeginForm("LogOn","Account",new AjaxOptions { HttpMethod="post",OnSuccess="LoginSubmitted"})){} 调节器 if (Request.IsAjaxRequest()){ return Json(new {
我正在使用Razor创建一个新项目asp.net mvc3,并希望将LogOn转换为ajax请求.
HTML @using (Ajax.BeginForm("LogOn","Account",new AjaxOptions { HttpMethod="post",OnSuccess="LoginSubmitted"})) { } 调节器 if (Request.IsAjaxRequest()) { return Json(new { ResultMessage = "Username or password provided is incorrect"}); } else { ModelState.AddModelError("","The user name or password provided is incorrect."); } 其他一切都是一样的. 首先,看着Fiddler的http响应,我注意到没有x-requested-with标头.所以我补充一下 <input type="hidden" name="X-Requested-With" value="XMLHttpRequest" /> 这似乎工作,但现在我收到的是一个Json对象,它没有被解析,而谷歌Chrome只是通过发回一个应用程序/ json文档将Json渲染到屏幕.所有脚本都已到位. 我也这样做了: @using (Ajax.BeginForm("Submit","home",new AjaxOptions { HttpMethod = "Post",OnSuccess="LoginSubmitted"})) { } @section head { <script type="text/javascript"> function LoginSubmitted(res) { alert(res.Message); } </script> } public ActionResult Submit(string id) { if (Request.IsAjaxRequest()) { return Json(new { Message = "Logged In" } ); } else { return View(); } } 以我自己创建的形式,使用标准助手可以正常工作. 发生了什么? 解决方法
那是因为默认情况下ASP.NET MVC 3使用jQuery和不引人注目的AJAX而不是MicrosoftAjax *库.这意味着当您编写Ajax.BeginForm时,您需要在页面中包含正确的脚本:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 并在您的web.config中确保您启用了不显眼的JavaScript: <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 现在,您可以安全地丢弃页面上的所有MicrosoftAjax *脚本引用(如果有的话),它们将不再使用. 据我个人说,我从来没有使用任何Ajax.*助手.我总是喜欢控制.所以我会写: @using (Html.BeginForm("LogOn","Account")) { } 然后使用jquery form plugin AJAXify此表单: $(function() { $('form').ajaxForm(function(result) { alert('form successfully submitted'); }); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 错误System.Web.HttpCompileException(0x80
- asp.net-mvc – 如何在mvc4中的特定视图中添加单个css文件?
- asp.net – web.config不转发到非.aspx页面上的404错误页面
- asp.net-mvc-4 – Cshtml无法解析引用
- asp.net-mvc-3 – 用于Nhibernate事务管理的ActionFilter是
- asp.net – @RenderSection在嵌套剃刀模板
- asp.net – 回滚请求身体流
- asp.net 工具
- asp.net-mvc-4 – SignalR连接错误
- asp.net – 公共访问本地IIS服务器
推荐文章
站长推荐
- 使用带有asp.net.No错误消息的SalesLogix使用Ole
- Asp.Net和Asp.Net MVC中的Ajax之间的区别
- ASP.Net MVC如何将数据从视图传递到控制器
- asp.net-mvc-4 – MVC4:什么实体代表表webpages
- asp.net-mvc-3 – ASP.NET MVC 3,动作过滤器和Au
- asp.net-mvc – 使用OWIN的Google身份验证Oauth在
- asp.net-mvc – 多对多的ASP.NET MVC绑定
- asp.net – 用于集成的IIS 7的自定义HttpModule
- asp.net – Crystal Report Viewer – 以编程方式
- asp.net-mvc – 接受逗号和点作为小数分隔符[重复
热点阅读