这个MVC的东西很有趣,但沿途的每一步都是另一个小障碍。
我今天第一次使用Request.IsAjaxRequest与微软的AJAX库结合使用。我还没有使用jQuery(我不得不提到,因为我只是超链接到关于jQuery的问题!)。
不幸的是我在测试此代码之前安装了RC1 refresh。
我正在使用Ajax.BeginForm
。
<% using (Ajax.BeginForm("Contact", "AboutUs", new AjaxOptions()
{
OnBegin = "submitComments_begin",
OnSuccess = "submitComments_success",
OnFailure = "submitComments_failure",
OnComplete = "submitComments_complete",
LoadingElementId = "submitting"
}, new { id="fooForm" }))
当我的控制器操作执行时,这些是我的标题:
Connection Pragma,Content-Length, 内容类型,接受,接受编码, 接受语言,主持人,推荐人, 用户代理,UA-CPU
此外,FORM包含此Param
Request["__MVCASYNCPOST"] = "true"
最终效果是返回false!
Request.IsAjaxRequest()
我遇到了Chrome和Internet Explorer的问题。
请告诉我,如果我做某事愚蠢 - 或者是否有什么事情发生了。
最后的想法:嗯 - 也许我需要一个新的期货DLL。如果结果是问题,我会更新
答案 0 :(得分:1)
感谢Phil telling me I had to update the .js file MicrosoftMvcAjax.js。即使它在发行说明中没有告诉我我需要更新它们。
菲尔:菲尔:如果你想得到正确答案的积分,你有两天时间才能接受我自己的答案。谢谢!答案 1 :(得分:0)
我仍然不确定这是不是一个错误 - 任何人都可以确认吗?记住我在谈论新的RC1 Refresh,而不是原来的RC1。
如果它是一个错误(我希望我只是做一些粗心的事情)那么这是我现在的临时解决方案:
HttpRequestBase上的扩展方法:
public static bool IsAjaxRequest2(this HttpRequestBase request)
{
return !string.IsNullOrEmpty(
request.Params["__MVCASYNCPOST"] as string);
}
然后我只使用Request.IsAjaxRequest2()
,我会在以后修复它时进行搜索和替换。
答案 2 :(得分:0)
它没有显示在您发布的代码段中,但您很可能拥有表单/表单标记。这些都干扰了生成表单标签的Ajax.BeginForm。删除外部表单标记后,Request.IsAjaxRequest将返回true。