我正在更新一个项目,其中许多不同的视图共享相同的布局,它们之间的内容只有微小的差异。
基本布局如下所示:
@Html.Partial("_HeadingBar")
<div class="panel grid_4">
<div class="panel-header">
<span>@ViewBag.SmallHeader</span>
</div>
<div class="panel-body">
<div class="panel-content">
@* Welcome.cshtml:
<p>Please use the navigation bar on the side of the site to utilize the features of the site.</p> *@
@* Login.cshtml:
@using (Html.BeginForm())
{
if (!ViewData.ModelState.IsValid) ...
<div class="form-row-inline">
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
...
<button type="submit" class="btn btn-success"><i class="icon-lock"></i> Sign In</button>
} *@
@* ChangePassword.cshtml:
@using(Html.BeginForm())
{
...
@Html.LabelFor(m => m.NewPassword)
@Html.PasswordFor(m => m.NewPassword)
@Html.ValidationMessageFor(m => m.NewPassword)
...
} *@
</div>
</div>
</div>
我的想法是将每个视图剥离为独特的内容,使其成为局部视图,并将共享部分变为常规视图。
但我不确定这是正确的方法。添加Html.RenderPartial
会导致对服务器的第二次调用,并且需要将额外的操作添加到控制器。
看起来我正在寻找一个布局,但该网站已经使用了一个布局。
处理此问题的正确/最佳实践方法是什么?