部分视图仅在ajax调用后加载

时间:2014-01-07 13:04:09

标签: jquery asp.net-mvc asp.net-mvc-partialview

我已经从使用IE7转换为IE9,不幸的是我的部分视图被返回并用部分视图覆盖了整个页面。

点击html中的按钮,我打电话给

在javascript中:

        $.ajax({
            type: "POST",
            url: $('form').attr('action'),
            data: $('form').serialize(),
            dataType: "text",
            success: function (response) {
                alert('Pass'); // This will be hit
            },
            error: function (errorObj) {
                alert('Error');
            }
        });

然后转到控制器:

    [HttpPost]
    public ActionResult Index(Index model)
    {
    return NewFeature(model);
    }

    [HttpPost]
    public ActionResult NewFeature(Index model)
    {
        return PartialView("_feature", model);
    }

知道它可能是什么吗?

1 个答案:

答案 0 :(得分:0)

只要它不是提交按钮,就不需要阻止默认行为。如果是提交按钮,则需要通过返回false来覆盖基本操作。即

<input type="submit" onclick="return myFunction()" />

function myFunction()
{
    DoWork();
    return false;
}

由于您返回部分内容并确认警报正在被点击,因此答案应该简单如下:

success: function (response) {
            $("#DivIdToUpdate").html(response);
        } 

另外需要注意的是,类型可能应该是json而不是text,但是我看不到你的其余代码。此外,在您的控制器上,您似乎错误地调用了这些函数。尝试更改此内容。

[HttpPost]
public ActionResult Index(Index model)
{
    return this.RedirectToAction("NewFeature", new { model = model });
}

[HttpGet]
public ActionResult NewFeature(Index model)
{
    return this.PartialView("_feature", model);
}

此代码关注帖子 - &gt;重定向 - &gt;获取模式并将发出两个请求,一个用于工作,另一个用于获取新数据。这将导致ModelState刷新并重新加载您需要的所有数据。 javascript ajax帖子将从控制器接收ActionResult作为编译的cshtml,因此通过调用上面的代码,html将在你喜欢的任何元素内部呈现。

此外,

url: $('form').attr('action'),

可以轻松翻译成:

url: '@Url.Content("~/Home/Index")',