使用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(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Azure AAD – 受众群体无效
- asp.net – 多个Application_Start事件触发
- 来自asp.net会员身份验证的userid?
- asp.net – aspx中__EVENTVALIDATION __VIEWSTATE的目的是什
- asp.net-mvc – SignalR无法从外部程序集中找到集线器
- 在asp.net.mvc中,什么是正确的方法来引用css内的图像
- asp.net – Javascript日期本地化
- 为ASP.NET MVC创建一个基于Unity的ControllerFactory
- asp.net-mvc-3 – ASP.NET Web API问题 – 授权/认证
- asp.net-mvc – 为什么IIS没有清理池回收导致网站内存异常的
- asp.net-mvc – 如何在ASP.NET MVC中传递页面的元
- asp.net – GetHashCode在这里只是货物崇拜吗?
- asp.net-mvc – Asp.net mvc 3 – 自定义模型绑定
- 如何从ASP.NET身份获取用户列表?
- asp.net-mvc-3 – 我怎么能用CheckBoxFor使用int
- asp.net – 无法在动态创建的System.Web.UI.WebC
- asp.net-mvc – 如何在View中获取当前的url值
- ASP.NET超链接asp:HyperLink与A href
- Asp.Net GridView EditIndex竞争条件?
- asp.net – 如何在Page_Load上获取参数