在ASP.NET MVC中如何实现自定义视图引擎?
- 内容介绍
- 文章标签
- 相关推荐
本文共计450个文字,预计阅读时间需要2分钟。
在ASP.NET WebForms中,您可以使用以下语法直接在标记中使用appSettings中的值:${MySettingKey}。然而,在ASP.NET MVC中,这种方法不起作用,因为正如MSDN所指出,这种语法仅适用于服务器控件。我遇到过类似的问题。
在ASP.NET WebForms中,您可以使用以下语法直接在标记中引用appSettings:<%$MySettingKey %>
不幸的是,这在ASP.NET MVC中不起作用,因为正如MSDN所指出的,这种语法仅适用于服务器控件.
我遇到过一些我喜欢在ASP.NET MVC视图(WebFormsViewEngine)中使用这种语法糖的情况.有谁知道是否有办法让这个工作?
好像我们可以从WebFormsViewEngine派生出来并将其添加为一个功能,或许?
不是很干净但是在ASP.NET MVC视图中你可以写这个:<asp:Literal ID="dummy" runat="server" Text="<%$appSettings:MySettingKey%>" />
这将有效地打印appSettings中的任何值:
<appSettings> <add key="MySettingKey" value="SOME VALUE"/> </appSettings>
哦,你的页面上不会添加VIEWSTATE标签:-)
现在到了这一点:我强烈反对你做这样的MVC.牵引数据显示不是View的责任,它是需要通过它的控制器.所以我会让MySetting成为ViewModel的一个属性,它将由控制器填充并传递给要显示的视图.
public ActionResult Index() { var model = new SomeViewModel { // TODO: Might consider some repository here MySetting = ConfigurationManager.AppSettings["MySetting"] } return View(model); }
并在视图中:
<%= Html.Encode(Model.MySetting) %>
使用ASP.NET 4中引入的new syntax甚至更短:
<%: Model.MySetting %>
更新:
如果您认为MySetting不是ViewModel的属性(如某些css名称或类似名称),则可以扩展HtmlHelper:
public static string ConfigValue(this HtmlHelper htmlHelper, string key) { return ConfigurationManager.AppSettings[key]; }
并像这样使用它:
<%= Html.Encode(Html.ConfigValue("MySetting")) %>
本文共计450个文字,预计阅读时间需要2分钟。
在ASP.NET WebForms中,您可以使用以下语法直接在标记中使用appSettings中的值:${MySettingKey}。然而,在ASP.NET MVC中,这种方法不起作用,因为正如MSDN所指出,这种语法仅适用于服务器控件。我遇到过类似的问题。
在ASP.NET WebForms中,您可以使用以下语法直接在标记中引用appSettings:<%$MySettingKey %>
不幸的是,这在ASP.NET MVC中不起作用,因为正如MSDN所指出的,这种语法仅适用于服务器控件.
我遇到过一些我喜欢在ASP.NET MVC视图(WebFormsViewEngine)中使用这种语法糖的情况.有谁知道是否有办法让这个工作?
好像我们可以从WebFormsViewEngine派生出来并将其添加为一个功能,或许?
不是很干净但是在ASP.NET MVC视图中你可以写这个:<asp:Literal ID="dummy" runat="server" Text="<%$appSettings:MySettingKey%>" />
这将有效地打印appSettings中的任何值:
<appSettings> <add key="MySettingKey" value="SOME VALUE"/> </appSettings>
哦,你的页面上不会添加VIEWSTATE标签:-)
现在到了这一点:我强烈反对你做这样的MVC.牵引数据显示不是View的责任,它是需要通过它的控制器.所以我会让MySetting成为ViewModel的一个属性,它将由控制器填充并传递给要显示的视图.
public ActionResult Index() { var model = new SomeViewModel { // TODO: Might consider some repository here MySetting = ConfigurationManager.AppSettings["MySetting"] } return View(model); }
并在视图中:
<%= Html.Encode(Model.MySetting) %>
使用ASP.NET 4中引入的new syntax甚至更短:
<%: Model.MySetting %>
更新:
如果您认为MySetting不是ViewModel的属性(如某些css名称或类似名称),则可以扩展HtmlHelper:
public static string ConfigValue(this HtmlHelper htmlHelper, string key) { return ConfigurationManager.AppSettings[key]; }
并像这样使用它:
<%= Html.Encode(Html.ConfigValue("MySetting")) %>

