像MVC4 Razor模板一样

时间:2013-04-30 11:57:53

标签: c# asp.net-mvc asp.net-mvc-4 razor

您好我认为我有一个简单的问题,

我有一个类似的cshtml:

<div id="box">
    @if (model.View == "item1")
    {
        <div id="item1">
            ...
        </div>
    }
    else
    {
        <div id="item2">
            ...
        </div>
    }   
    <div id="itemDescription">
        ...
    </div>
</div>

我通过模型传递参数以根据参数显示某些内容,因为在这两种情况下文档的其余部分都是相同的。

还有另一种更好的方法来实现这一目标吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

如果那两个div不多,那么你的方法很好。否则,创建两个部分视图以帮助保持整洁:

@if (model.View == "item1")
{
    @Html.RenderPartial("Item1");
}
else
{
   @Html.RenderPartial("Item2");
} 

答案 1 :(得分:3)

不是真的;这是一种非常好的做事方式。如果div id始终与model.View的值匹配,则可以将其缩短为:

<div id="box">
    <div id="@(model.View)">
        ...
    </div>  
    <div id="itemDescription">
        ...
    </div>
</div>

否则,你的方法很好。根据von v的评论,如果包含的标记是冗长的(或者您需要在多个位置重复逻辑),您可能希望查看部分视图:

http://www.asp.net/mvc/videos/mvc-2/how-do-i/how-do-i-work-with-data-in-aspnet-mvc-partial-views