MVC:如何使用不同视图的视图将模型传递给partialview?

时间:2017-02-07 15:02:41

标签: asp.net-mvc

Partialviewcontroller:

public ActionResult Groepen()
{
    DropDownModel model = new DropDownModel();
    List<GroepModel> groepen = Mapper.Map<List<GroepenWerkvorm>, List<GroepModel>>(db.GroepenWerkvorms.ToList());
    model.groepList = new SelectList(groepen, "id", "Naam");
    List<ParameterModel> parameters = Mapper.Map<List<ParametersWerkvorm>, List<ParameterModel>>(db.ParametersWerkvorms.ToList());
    model.parameterList = new SelectList(parameters, "id", "Naam");

    return View(model);
}

运行局部视图时,工作正常。

查看(也不是部分视图,但不同的视图):

    @Html.Partial("~/Views/DropDown/Groepen.cshtml")

=&GT;空引用异常,因为它没有获得正确的数据。

所以我需要将模型从当前视图传递给partialview,但是如何?

尝试:

    @Html.Partial("~/Views/DropDown/Groepen.cshtml", ViewBag.partial)

但后来我得到:扩展方法无法动态显示。

那么如何为我的partialview提供正确的模型以便我能正确呈现它?

1 个答案:

答案 0 :(得分:1)

视图可以包含任意数量的部分视图。模型可以包含任意数量的嵌套模型。如果您的父视图正在创建子视图模型,则视图模型(DropDownModel)应包含将用作部分视图视图模型的子模型。

public class DropDownModel
{
    public string Something {get; set;}
    public ChildModel Model {get; set;}
}

然后您的父视图Groepen将包含一个部分视图行,如:

@Html.Partial("~/Views/DropDown/GroepenInnerPartial.cshtml", Model.ChildModel)

不需要Viewbag,我认为这是违反最佳做法的。

**由于我没有编辑器

,部分视图上的语法可能略有偏差