对多个视图,模型和控制器使用部分视图

时间:2018-10-25 11:20:48

标签: asp.net-mvc razor asp.net-core-mvc partial-views

有没有一种方法可以拥有模板局部视图,该视图将重复执行一项工作,但是局部视图中只有一件事会发生变化,因此可以在具有不同模型的多个视图中使用它,而不在乎Controller?

部分视图将从视图模型中接收布尔值,这取决于父视图。模型中的布尔值将始终用于相同位置。

@Html.LabelFor(Model => Model.Bool1, new { @class = "class" }) 
@Html.RadioButtonFor(Model => Model.Bool1, true, new { @class = "class"})`

在调用它时,我会将布尔名称传递给局部视图。

@Html.Partial("_RadioButton", Model.Bool1})

现在,我该怎么做才能使Bool保持可变。例如,以不同的模型在不同的视图中调用相同的部分。

@Html.Partial("_RadioButton", Model.Bool2})

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该使用编辑器模板,并根据单选按钮将模型传递给它。

在要包含模板的位置添加以下行,并传入模型和任何其他变量(对于基于模板位置的微小更改很有用)。

 @Html.DisplayFor(m => Model, "_RadioButtonTmp", new { IsThisCorrect = "Yes", Title="RadioBtn" })

然后您的模板(_RadioButtonTmp)类似于:

@model RadioButton
@if (ViewBag.IsThisCorrect == "Yes")
{
<p>However you want the radio button to look based on your model</p>
}

更新备用模板

@model bool

<div>
@Html.RadioButtonFor(m => m, true, new { @class = "class"})
</div>