避免ASP MVC4中的代码重复

时间:2013-01-13 01:09:18

标签: asp.net-mvc-4 code-duplication

我有一个带三个新闻框的视图: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)

1 个答案:

答案 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; }
}