Request.IsAjaxRequest没有唤醒mvc

时间:2016-03-16 08:05:14

标签: c# ajax model-view-controller

当我使用Request.IsAjaxRequest()时。我无法返回view()。请检查以下代码。 这是行动。

public ActionResult Index()
    {
        if (!Request.IsAjaxRequest()) {
            return View("ajexview");            
        }
        return view("About");
    }

这是视图

<script>
$(function () {
    $("button").click(function () {
        var car = { Make: 'Audi', Model: 'A4 Avant', Color: 'Black', Registered: 2013 };
        $.ajax({
            type: "POST",
            url: "/home/index/",
            data: car,
            datatype: "html",
            success: function (data) {
                $('#result').html(data);
            }
        });
    });
});

<button>Click me</button>

当我发帖关于视图无法返回时

2 个答案:

答案 0 :(得分:0)

首先,我不确定您的索引操作是否会受到您的ajax调用的影响。你正在做一个针对get动作的帖子。要使Request.IsAjaxRequest()按预期工作,请尝试创建另一个控制器操作并使用HttpPost属性标记它,如下所示,

[HttpPost]
public ActionResult Index(Car car)
{
   if (!Request.IsAjaxRequest()) {
        return PartialView("ajexview");            
    }
    return View("About");
}
  

另请注意,在if (!Request.IsAjaxRequest())区块中,我将返回&#34; ajexview&#34;作为PartialView

或者如果您打算点击获取索引操作,那么您将需要执行ajax&#39; get&#39;请求改为

$.ajax({
        type: "GET",
        url: "/home/index/",
        success: function (data) {
        $('#result').html(data);
    }
});

答案 1 :(得分:0)

确保在正确的位置渲染脚本并在_layout.cshtml中订购:

e.g。在顶部: ...

    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")
</head>

......和底部:

         @Scripts.Render("~/bundles/jquery")
         @Scripts.Render("~/bundles/jqueryval")
         @Scripts.Render("~/bundles/bootstrap")
         @Styles.Render("~/Content/datatables")
         @Scripts.Render("~/bundles/datatables")
         <!-- etc. -->
         @RenderSection("scripts", required: false) 
    </body> 
</html>

还要注意BundleConfig.cs的构建。