Form + Ajax无法正常工作

时间:2014-02-05 16:32:43

标签: javascript jquery asp.net-mvc asp.net-mvc-4

表单+ Ajax - >精确DIV的结果 3小时53分钟前|链接

您好,

我需要在DIV中可视化我的partialView(表单提交后的结果)。

我有以下文件:

查看Man_por.cshtml

...

<div class="col-md4" id="divTabPortfolios">

enter code here@{Html.RenderAction("Load_portfoliosPartial","Management_portfolios");}

<div>

<div class="col-md4" id="divTabPortfolio">

<div>

...

查看Load_portfolios_partial

<script src="myscript.js" type="text/javascript"></script>

....

...

@using ( @ Html.BeginForm() )

{

....

...

<button type="submit" class=".." value="Open"/>

}

脚本MyScript.js

$(function () {
    $('form').submit(function () {
        if ($(this).valid()) {
            $.ajax({
                url: this.action,
                type: this.method,
                data: $(this).serialize(),
                success: function (result) {
                    $('#divTabPortfolio').html(result);
                }
            });
        }
        return false;
    });
});

当它显示结果时它会打开整个页面而不是局部视图(_layout.cshtml + Page)等等。它不会更新指定的DIV。

我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

使用@using (Ajax.beginForm())代替@using (Html.beginForm()

MVC支持开箱即用的Ajax表单。

然后你提供动作,控制器和选择器(UpdateTargetId设置为要更新的面板的id),如下所示:

<div id="divTabPortfolio">
    @using (Ajax.BeginForm("SomeAction", "YourController", new { id = optionalParameters }, new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "divTabPortfolio" }))
    { 
    }
</div>

对于MVC / Razor中的这种基本Ajax回发,不需要你自己的jQuery / Ajax。

只要您的操作方法返回PartialView,您就不需要执行任何其他操作。

根据建议,如果您可以发布更多页面,那么它将有助于提供详细信息