MVC部分视图返回的是整个页面而不仅仅是部分内容

5

我会翻译中文。以下是名为"_transactions"的部分视图:

<div id="section-transactions" class="documentsanchor">
</div>
<div>
    <div class="row">
        <div class="col-lg-12">
            <div>
                <h4 class="company-headings">@ViewBag.SecSymbol Transactions</h4>
            </div>
        <div>
    </div>
</div>

我使用以下方式进行渲染:

 @{Html.RenderAction("Transactions", "Company");}

以下是公司控制器的“Transactions”方法:

    public async Task<PartialViewResult> Transactions()
    {
        ViewBag.SecSymbol = "test";

        return PartialView("_transactions");
    }

这个页面上有其他的部分视图。

虽然它工作得很好,但是我在页面上放置了一个按钮,应该获取一个新的部分视图并替换当前的视图。它会发起以下的 ajax 调用:

    $("#btn_transactions").click(function (e) {           
        var url = "Company/Transactions";
        $.ajax({
            url: url,
            success: function (result) {
                alert(result);
                $('#transTarget').html(result);
            },
            error: function () {
                alert("Error occured");
            }
        });
    })

问题在于整个页面都被返回到了“result”中,包括所有的部分和布局,而我只想要交易部分。我做错了什么?

使用 Url.Action 代替 Html.RenderAction。 - Sparrow
如果我这样做,就什么也不会被渲染出来。 - Scott
@Scott,你把_transactions视图的Layout属性设置为null了吗? - threesixnine
你的HTML中如何定义transTarget? - Sparrow
<div id="transTarget"></div> - Scott
是的,我将布局设置为null,如下所示,但没有任何变化: @{ Layout = null; } - Scott
2个回答

7
请在局部视图中添加以下代码:
@{
Layout=null;
}

0
确保你的配置文件中设置了路由 -
routes.MapRoute("CompanyTransactions", "company/transactions", new { controller = "Company", action = "Transactions" });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接