Asp.net mvc 4 ASP MVC4中避免代码重复

Asp.net mvc 4 ASP MVC4中避免代码重复,asp.net-mvc-4,code-duplication,Asp.net Mvc 4,Code Duplication,我可以看到三个新闻框:每日新闻、每周新闻、每月新闻。 在我的模型中,我有三个相同的属性。 现在,我的代码如下所示: @{var news=Model.NewsOfTheDay;} <div class="newsbox"> <h2>@(news.Title)</h2> <p>@(news.Text)</p> <div> <!--other html code--> @{var news=Mod

我可以看到三个新闻框:每日新闻、每周新闻、每月新闻。 在我的模型中,我有三个相同的属性。 现在,我的代码如下所示:

@{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>
@{var news=Model.newsofDay;}
@(新闻标题)
@(新闻文本)

@{var news=Model.newsofweek;} @(新闻标题) @(新闻文本)

所以,正如您所看到的,我在这里重复html代码,为了清晰起见,删除了更多重复。现在,我可以对部分视图(Html.Action)进行一些处理,但接下来我必须拆分我的模型


是否存在与此等效的内容:
@RenderBox(“NewsItem”,Model.newsofweek)

我可能会选择局部视图,但您也可以使用自定义的HtmlHelper方法。关键是使每个属性实际上都具有相同的类型(或实现相同的接口),因为模型的类型需要相同。您可以对模型类型使用dynamic,但这似乎有些过分,因为它们似乎具有相同的属性

 @Html.Partial("_NewsItem",Model.NewsOfTheWeek)
其中_NewsItem.cshtml是

@model NewsItem

<div class="newsbox">
    <h2>@Model.Title</h2>
    <p>@Model.Text</p>
<div>

我可能会使用局部视图,但您也可以使用自定义的HtmlHelper方法。关键是使每个属性实际上都具有相同的类型(或实现相同的接口),因为模型的类型需要相同。您可以对模型类型使用dynamic,但这似乎有些过分,因为它们似乎具有相同的属性

 @Html.Partial("_NewsItem",Model.NewsOfTheWeek)
其中_NewsItem.cshtml是

@model NewsItem

<div class="newsbox">
    <h2>@Model.Title</h2>
    <p>@Model.Text</p>
<div>

不是MVC开发人员,但为什么不只渲染一个局部视图三次,并将任何类型的
newsofweek
作为模型类型?我可以,正如我所说的,但是我需要对每个新闻类型进行单独的查询,我必须(更愿意)在一次调用中获得它们。不是MVC开发人员,但是,为什么不只渲染一个局部视图三次,并将任何类型的
newsofweek
作为模型类型呢?我可以,正如我所说的,但是我需要对每个新闻类型进行单独的查询,我必须(更愿意)在一次调用中获得它们。