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

在ASP.NET MVC中使用<%$%>

发布时间:2020-12-16 09:30:53 所属栏目:asp.Net 来源:网络整理
导读:在ASP.NET WebForms中,您可以使用以下语法直接在标记中引用appSettings: %$MySettingKey % 不幸的是,这在ASP.NET MVC中不起作用,因为正如MSDN所指出的,这种语法仅适用于服务器控件. 我遇到过一些我喜欢在ASP.NET MVC视图(WebFormsViewEngine)中使用这种语法
在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")) %>

(编辑:李大同)

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

    推荐文章
      热点阅读