【问题标题】:MVC Partial View Returns Whole Page Instead of Just the PartialMVC 部分视图返回整个页面,而不仅仅是部分
【发布时间】:2018-06-08 07:00:23
【问题描述】:

我有以下名为“_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");
            }
        });
    })

问题是在“结果”中返回整个页面,即所有部分以及布局,而我想要的只是部分事务。我做错了什么?

【问题讨论】:

  • 使用 Url.Action 代替 Html.RenderAction
  • 如果我这样做,什么都不会被渲染。
  • @Scott 您是否将 _transactions 视图的 Layout 属性设置为 null?
  • 你的html中是如何定义transTarget的?

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


【解决方案1】:

在局部视图中添加此代码

@{
Layout=null;
}

【讨论】:

    【解决方案2】:

    确保您在配置中设置了路线 -

    routes.MapRoute("CompanyTransactions", "company/transactions", new { controller = "Company", action = "Transactions" });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多