在ASP.NET MVC应用程序中,我有一个名为CarSearchCriteria的模型:
public class CarSearchCriteria{
public int CarMake {get;set;} // This is selected from a dropdownlist
public int YearOfFirstReg {get;set;}
public string ModelVariant {get;set}
}
我有两种视图-一种用于编辑,另一种用于查看。在CarMake属性的编辑视图中,我可以执行以下操作。我知道我可以使用DropDownListFor,但暂时不希望与SelectList混淆:
<select name="CarMake">
<option value="1">BMW</option>
<option value="2">Mercedes</option>
<option value="3">Toyota</option>
</select>
因此,模型绑定机制将轻松地将所选值绑定到适当的模型属性。但是阅读模式呢?我不能显示1或2。我需要展示宝马,奔驰等。我的问题是首选的方法是什么,我必须拥有一个包含实际文本信息的属性名称,例如CarMakeText吗?
David的解决方案很好,但是由于某种原因,我找到了自己的解决方案来更好地满足自己的需求,此外,我发现它更优雅。因此,基本上我要做的就是创建一个类,其中包含仅保留ID的所有属性的文本描述。例如,我有以下模型:
public class EmployeeModel{
public int EmployeeID {get;set;}
public string FullName {get;set}
*public int DepartmentID {get;set}
*public int SpecialityID {get;set;}
public int Age {get;set;}
}
标有星号的属性是保留可能的许多预定义选项ID的属性,在显示时,我们应该显示实际的描述,而不是数字表示。为此,我们创建一个单独的类:
public class EmployeeTextValues{
public string DepartmentName {get;set;}
public string SpecialityName {get;set;}
}
然后,我将这个类作为属性添加到我的模型中:
public EmployeeTextValues TextValues {get;set;}
之后,可以从任何地方(包括Razor)轻松访问它。
附言:我敢肯定,在初始化此属性之前,很多人会倾向于执行以下操作:
Employee emp=new Employee;
emp.Age=25;
emp.TextValues.DepartmentName="Engineering";// Don't do this
如果您尝试访问或设置Textvalues.Someproperty,则会得到Object reference not set to an instance of an object
。因此,不要忘记先将TextValues设置为某些初始化的对象。只是一个提醒,仅此而已。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句