我有一个带三个新闻框的视图:NewsOfTheDay,NewsOfTheWeek,NewsOfTheMonth。 在我的模型中,我有三个相同的属性。 现在我的代码看起来像这样:
@{var news=Model.NewsOfTheDay;}
<div class="newsbox">
<h2>@(news.Title)</h2>
<p>@(news.Text)</p>
<div>
<!--other html code-->
@{var news=Model.NewsOfTheWeek;}
<div class="newsbox">
<h2>@(news.Title)</h2>
<p>@(news.Text)</p>
<div>
所以,正如你所看到的,我在这里重复html代码,为了清晰起见,删除了更多重复内容。现在,我可以使用部分视图(Html.Action)做一些魔术但是我将不得不拆分我的模型。
是否有与此相同的内容:@RenderBox("NewsItem",Model.NewsOfTheWeek)
答案 0 :(得分:3)
我可能会使用局部视图,但您也可以使用自定义HtmlHelper方法。关键是让每个属性实际上属于同一类型(或实现相同的接口),因为模型的类型需要相同。您可以将动态用于模型类型,但这似乎有点过头了,因为它们似乎具有相同的属性。
@Html.Partial("_NewsItem",Model.NewsOfTheWeek)
其中_NewsItem.cshtml是
@model NewsItem
<div class="newsbox">
<h2>@Model.Title</h2>
<p>@Model.Text</p>
<div>
并且您的NewsItem类是
public class NewsItem
{
public string Title { get; set; }
public string Text { get; set; }
}