模板的Html.用于ASP中特定数据类型的编辑器.净MVC3
本文关键字:数据类型 编辑器 MVC3 Html 用于 ASP | 更新日期: 2023-09-27 18:16:03
我正在开发一个。net mvc应用程序。我有几个不同的models
,它们都有一个或两个属性,数据类型为varchar(1)
。对于其中的每一个,我都想要一个带有"Y"或"N"值的是/否下拉菜单。
我目前的解决方案如下:我有一个方法在一个公共类,它发送给我我的是/否值的下拉列表:
List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem() { Text = "Yes", Value = "Y" });
items.Add(new SelectListItem() { Text = "No", Value = "N" });
return items;
在我的控制器中,我将这个列表设置到ViewBag中,并将其发送到View中:
ViewBag.YesNo = new SelectList(repository.GetYesNo(), "Value", "Text");
然后我将它用于特定的Model
属性,像这样:
@Html.DropDownListFor(model => model.PARAMETER_REQUIRED, (SelectList)ViewBag.YesNo)
这完成了工作,但我不喜欢ViewBag方法,因为在切换视图时维护它非常乏味,我不喜欢重复代码。我想改变一下,这样我就可以直接使用
@Html.EditorFor(model => model.PARAMETER_REQUIRED)
并让Razor知道我希望这是一个带有Yes/No属性的下拉菜单。我还希望这是可重用的,这样我就可以使用相同的模板的任何字段(在其他模型中),我想用这个是/否下拉框编辑。
这可能吗?我知道' temtemplate ' DisplayFor是可能的。我们能用EditorFor实现类似的功能吗?
下面是一些很好的内置显示模板和编辑器模板的例子。看看EditorTemplates/Boolean.ascx。你会想要这样的东西,事实上,我不知道为什么你不能使用布尔模板原样,并改变你的视图模型只是列表或其他合适的集合。然后,如果有必要,您可以自定义布尔编辑器模板,以提供您所需要的确切的DropDownList视图。
编辑模板使用给定类型分配给它的视图;您可能想要做的是创建一个命名模板,并将该名称应用于Html。EditorFor过载。然后,您可以为该场景创建一个专门的模板,而不必为char类型全局定义它。看看这个例子: