加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 基于属性名称的共享编辑器模板?

发布时间:2020-12-16 06:26:51 所属栏目:asp.Net 来源:网络整理
导读:在ASP.net MVC 4 Web应用程序中,我有5个模型类,它们都具有相同的属性,比如字符串ManufacturerName.我想在数据库中显示制造商的下拉列表(使用ViewBag从控制器传递到视图的列表数据)在这些模型的创建/编辑模板中.可以这样做,但我在所有5个编辑器模板中重复下拉
在ASP.net MVC 4 Web应用程序中,我有5个模型类,它们都具有相同的属性,比如字符串ManufacturerName.我想在数据库中显示制造商的下拉列表(使用ViewBag从控制器传递到视图的列表数据)在这些模型的创建/编辑模板中.可以这样做,但我在所有5个编辑器模板中重复下拉代码

@Html.DropDownList("ManufacturerName",new SelectList(ViewBag.ManufacturerList))

我希望有一些方法可以在名为“Manufacturer.cshtml”的编辑器模板中将上面的下拉代码编写一次作为局部视图,并且可以从模型模板中调用它,就像这样

@Html.EditorForModel(model => model.ManufacturerName)

我知道上面的行通常会调用字符串的编辑器模板,因为这是ManufacturerName的类型,但有没有办法改变它以匹配属性名称?

解决方法

在?/ Views / Shared / EditorTemplates / Manufacturer.cshtml中创建一个新的EditorTemplate:

@Html.DropDownList("ManufacturerName",new SelectList(ViewBag.ManufacturerList))

然后使用[UIHint]在ViewModel中装饰属性:

[UIHint("Manufacturer")]
public string ManufacturerName { get; set; }

或者,如果您不想修改ViewModel,可以将templateName参数传递给EditorFor()方法:

@Html.EditorFor(x => x.Manufacturer,"Manufacturer")

最后一种方法的问题是,如果使用@ Html.EditorForModel()呈现编辑器,则不会使用适当的模板.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读