在我的应用程序中,我有很多 UI 元素(特别是按钮),我在其中一遍又一遍地重复相同的代码。
例如,在多个视图中,我可能有一个使用以下代码创建的编辑按钮:
@Html.ActionLink("Edit", "Edit", "SomeController", null, new { @class="button large blue" });
这里的问题是我对标签和样式进行了硬编码,所以如果我想更改按钮样式或标签,我必须在多个视图中进行。这样做会很乏味,因为我必须追踪每个按钮。
所以现在我正在考虑创建一个模板机制,我可以在中心区域定义一个按钮模板,并将它带到我想要使用它的任何视图中。
我已经考虑了两个选项,我试图在下面的半现实世界代码中勾勒出来。
我的问题是,我在正确的轨道上吗?哪个选项会更好,出于什么原因?是否已经有一些我可以考虑使用的东西,或者还有其他我没有想到的方法?
谢谢你的帮助。
Web.Config 模板
创建一个可以从 web.config 文件引入模板配置的自定义类。例如:
<ui.HtmlTemplates>
<add templateKey="FormCancel" tag="a" class="form-button large black" />
<add templateKey="FormSave" tag="input" type="submit" class="form-button large green" />
</ui.HtmlTemplates>
然后可以用这样的语法调用它们(方法签名是人为的)
@HtmlTemplates.Build("FormCancel", Url.Action("Index", "Home"))
局部视图模板
使用我想要的模板创建强类型的局部视图。
视图模型
public class UiButtonModel
{
public string Url{ get; set; }
}
局部视图
// Assume the file is called "_Button_FormCancel"
@Model path.to.model.directoy.UiButtonModel
<a href="@Model.Url" class="form-button large black">Cancel</a>
利用
@Html.Partial("_Button_FormCancel", new UiButtonModel(){Url = Url.Action("Index", "Home"));