在MVC RC1刷新中是否破坏了Request.IsAjaxRequest()?

时间:2009-02-01 01:42:22

标签: asp.net-mvc asp.net-ajax

这个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。如果结果是问题,我会更新

3 个答案:

答案 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。