gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 01:08:18 24 4
gpt4 key购买 nike

在 ASP.net MVC 4 Web 应用程序中,我有 5 个模型类,它们都具有相同的属性,例如 string ManufacturerName .我想在这些模型的创建/编辑模板中显示数据库中制造商的下拉列表(使用 ViewBag 从 Controller 传递到查看的列表数据)。可以这样做,但我在所有 5 个编辑器模板中重复下拉代码

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

我希望有某种方法可以在名为“Manufacturer.cshtml”的编辑器模板中编写一次上述下拉代码作为局部 View ,并且能够像这样从模型模板中调用它
@Html.EditorForModel(model => model.ManufacturerName)

我知道上面这行通常会为 string 调用编辑器模板因为这是 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() 呈现编辑器,将不会使用适当的模板。 .

关于asp.net-mvc - 基于属性名称的共享编辑器模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17331153/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com