使用ASP.NET MVC和JQuery表单插件/文件上传检测IsAjaxRequest()
|
我正在使用 JQuery Form插件在ASP.NET MVC应用程序上执行文件上传.我了解到,由于iframe用于文件上传(而不是XMLHttpRequest,这是不可能的),IsAjaxRequest的服务器端检查失败. 我看过一些与这个问题有关的帖子,但是没有遇到任何解决这个问题的好方法.与我的其他应用程序一样,我希望能够支持JavaScript启用和JavaScript禁用场景,这就是为什么我想检测请求是否为ajax. 我意识到正在使用的iframe方法在技术上不是ajax,但是我试图模仿ajax效果. 欢迎任何建议. 解决方法我只是意识到我完全没有回答这个问题,所以我在这里添加了顶部,并留下我的旧答案:问题是当通过iFrame发布文件时,“X-Requested-With”标题未设置,您不能在Javascript中为普通形式的POST设置特定的请求标头.您将不得不诉诸其他技巧,例如发送包含值的POST的隐藏字段,然后更改或覆盖“IsAjaxRequest”扩展方法以检查此情况. 可能最好的选择可能是使用不同的名称添加您自己的扩展方法,默认的MVC扩展方法代码与更改以检测您的iFrame上传POST,然后在您希望需要的地方使用您的扩展方法. 默认情况下,jQuery实际上将“X-Requested-With”标头设置为“XMLHttpRequest”.这是非常有用的,只要你小心地做所有的AJAX调用jQuery. 根据您的需要,可以轻松地在动作过滤器中设置检测,以便在需要时使用它,甚至可以将其构建成如下所示的控制器类: [jQueryPartial]
public abstract class MyController : Controller
{
public bool IsAjaxRequest { get; set; }
}
ActionFilterAttribute: public class jQueryPartial : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Verify if a XMLHttpRequest is fired.
// This can be done by checking the X-Requested-With
// HTTP header.
MyController myController = filterContext.Controller as MyController;
if (myController != null)
{
if (filterContext.HttpContext.Request.Headers["X-Requested-With"] != null
&& filterContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
{
myController.IsAjaxRequest = true;
}
else
{
myController.IsAjaxRequest = false;
}
}
}
}
并使用实现: public class SomeController : MyController
{
public ActionResult Index()
{
if (IsAjaxRequest)
DoThis();
else
DoThat();
return View();
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – Visual Studio在剃刀语句中显示语法错误但有
- asp.net – System.Diagnostics.Process.Start不能从IIS工作
- asp.net-mvc – 当前动作是ChildAction吗?
- ASP.NET MVC 4 AJAX提交表单不工作
- Asp.net webForm设置允许表单提交Html的方法
- asp.net-mvc – Ninject.MVC3,Nuget,WebActivator哦我的
- asp.net – 如何连接RDLC表达式中的值?
- 为什么asp.net OnTextChanged不工作
- asp.net-mvc-3 – AZURE ACS – Windows Live ID – 如何获
- asp.net http服务器推送到客户端
- asp.net-mvc-2 – ASP MVC2中部分缓存的当前做法
- 在发布asp.net Web API之后,ASP.NET MVC框架的未
- asp.net – 在另一个控件之前插入控件
- asp.net-core – 在执行DI时指定服务选项的干净方
- asp.net-mvc – ASP.NET MVC3 IIS无法获取加载样
- asp.net – 如何从javascript调用Web服务方法?
- asp.net-mvc – MVC3如何在ViewModel中将多个复选
- asp.net-mvc-3 – ASP.Net MVC 3:在哪里处理会话
- ASP.NET 4的IIS和服务器操作系统要求
- asp.net web-api – ASP.net Web API RESTful We
