gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 17:47:39 24 4
gpt4 key购买 nike

在 ASP.NET WebForms 中,您可以使用以下语法直接在标记中引用 appSettings:

<%$ MySettingKey %>

不幸的是,这在 ASP.NET MVC 中不起作用,因为正如 MSDN 指出的那样,此语法仅适用于服务器控件。

我遇到过一些情况,我希望在 ASP.NET MVC View (WebFormsViewEngine) 中使用此语法糖。有谁知道是否有办法让它工作?

似乎我们可以从 WebFormsViewEngine 派生并将其添加为一项功能,也许?

最佳答案

不是很干净,但在 ASP.NET MVC View 中你实际上可以这样写:

<asp:Literal ID="dummy" runat="server" Text="<%$appSettings:MySettingKey%>" />

这将有效地打印您在 appSettings 中拥有的任何值:

<appSettings>
<add key="MySettingKey" value="SOME VALUE"/>
</appSettings>

哦,您的页面中不会添加 VIEWSTATE 标记:-)

现在说重点:我强烈建议您不要做类似 MVC 的事情。拉取数据来显示不是 View 的责任,而是需要传递数据的 Controller 。因此,我将使 MySetting 成为 ViewModel 的一个属性,该属性将由 Controller 填充并传递给要显示的 View 。

public ActionResult Index()
{
var model = new SomeViewModel
{
// TODO: Might consider some repository here
MySetting = ConfigurationManager.AppSettings["MySetting"]
}
return View(model);
}

在 View 中:

<%= Html.Encode(Model.MySetting) %>

或更短的 new syntax ASP.NET 4 中引入:

<%: Model.MySetting %>
<小时/>

更新:

如果您认为 MySetting 不是 ViewModel 的属性(如某些 css 名称或类似名称),您可以扩展 HtmlHelper:

public static string ConfigValue(this HtmlHelper htmlHelper, string key)
{
return ConfigurationManager.AppSettings[key];
}

并像这样使用它:

<%= Html.Encode(Html.ConfigValue("MySetting")) %>

关于asp.net - 在 ASP.NET MVC 中使用 <%$ %>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1547314/

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