繁体   English   中英

在部分MVC中渲染部分

[英]Render Partial within a Partial MVC

我有2个局部视图,每个视图都有一个与之关联的不同视图模型。 第一个部分视图称为“ AccountNamesPartial”:

@using GACharts.Models.IntergratedAccount;
@model UpdateAccount
@for (int i = 0; i < Model.Accounts.Count(); i++)
{
<li>
    <label>
        @Html.HiddenFor(model => Model.Accounts[i].Id)
        @Html.CheckBoxFor(model => Model.Accounts[i].Selected)
        @Model.Accounts[i].Name
    </label>
</li>
}

因此,上面的局部视图是我想要在第二个局部视图中使用@ Html.RenderPartial(“ AccountNamesPartial”)的内容:

@model GACharts.Models.ReportViewModel
<select class="form-control" id="ChartViewId" name="ChartViewId">
                        <option>Select View</option>
@{Html.RenderPartial("AccountNamesPartial", new GACharts.Models.IntergratedAccount.UpdateAccount());}
</select>

我不再遇到堆栈跟踪错误,但是数据不会出现在第二部分视图中。 有什么想法/建议可以使其正常工作吗?

渲染表单以进行更新必然会要求您获取要更新的实际对象以获取其数据。 如果要继续使用局部函数,则意味着您将需要在ReportViewModel上已经存在该UpdateAccount视图模型:

public class ReportViewModel
{
    ...

    public UpdateAccount UpdateAccount { get; set; }
}

然后,在返回视图之前,请在操作中填充该内容:

var account = // fetch, from DB, for example
reportModel.UpdateAccount = new UpdateAccount { /* map properties over here */ };

然后,在您的部分中:

@Html.Partial("AccountNamesPartial", Model.UpdateAccount)

或者,您可以使用子操作:

[ChildActionOnly]
public ActionResult AccountNames()
{
    var account = // fetch, from DB, for example
    var model = new UpdateAccount { /* map properties */ };
    return PartialView("AccountNamesPartial", model);
}

然后,在您的部分中:

@Html.Action("AccountNames")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM