我的模型有很多重复的数据结构。但我想以相同的方式显示相关数据组。例如,我在文本框旁边有一个复选框,如果最近编辑过该文本框,则会显示一个箭头。我不想为相同的条件一遍又一遍地编写相同的代码。有没有办法可以调用视图结构并传入3个bool和一个字符串等参数,然后将它们放在正确的html显示模板中。
我,使用MVC5,使用c#
答案 0 :(得分:0)
当然 - 您应该可以使用显示模板和编辑器模板。首先,确定您可以将其抽象为独立视图模型。根据您的问题,我们可以创建一个具有2个布尔属性和1个字符串属性的独立视图模型。
public class PropertyGroup(){
public bool Checked {get;set;}
public string Text {get;set;}
public bool RecentlyEditied{get;set;}
}
在Shared views文件夹中创建一个名为EditorTemplates的文件夹,并在名为PropertyGroup的文件夹中放置一个视图(无论ViewModel类的名称是什么)。这将是局部视图,看起来像
@model Core.Models.ViewModels.PropertyGroup
<div>
@Html.CheckBoxFor(x=>x.Checked)
@Html.TextBoxFor(x=>x.Text)
@if(Model.RecentlyEdited){
<img src="arrow.gif" />
}
</div>
现在,您希望该标记出现的任何地方,您可以通过调用Html.EditorFor()
帮助程序并发送该ViewModel类来完成此任务。
@Html.EditorFor(x=>x.PropertyOfTypePropertyGroup)