我正在尝试在我的ASP.NET MVC site.master中构建一个全局菜单,我想知道如何从site.master标记访问Application属性?以前,我可能会从我的站点实例化一个config对象,然后设置一个公共属性。但是现在我正在抓挠我的head...must需要更多的咖啡。
使用应答代码更新的
在名为baseurl的应用程序属性中添加一个字符串设置,并给它一个"http://mysite.com“的值。
创建了一个GlobalMenu.cs模型类
public class GlobalMenu
{
private string _baseurl;
public string baseurl
{
get { return _baseurl; }
set
{
_baseurl = value;
}
}
} 创建一个名为BaseController并从Controller继承的基控制器类,并通过以下方式遍历OnActionExecuted:
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
string baseurl = Properties.Settings.Default.baseurl;
GlobalMenu menumodel = new GlobalMenu();
menumodel.baseurl = baseurl;
ViewData["menudata"] = menumodel;
base.OnActionExecuted(filterContext);
} 在共享文件夹中创建了一个名为ViewGlobalMenu的部分视图,该视图被强类型为GlobalMenu,该视图看起来类似于this...but,显然包含更多内容:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MyApp.Web.Models.GlobalMenu>" %>最后,在Site.Master中,我将它添加到我希望菜单显示的位置:
<%Html.RenderPartial("ViewGlobalMenu", (MyApp.Web.Models.GlobalMenu)ViewData["menudata"]); %>发布于 2009-05-07 15:21:56
以下是我可能会使用的策略。创建一个基础控制器,您的其他控制器将从中派生,并让它从Controller派生。重写基本控制器中的ActionExecuted方法,并让它访问应用程序设置(并可能缓存它们)。为菜单生成ViewData作为强类型菜单模型类,分配给ViewData中的特定键。您只需要将模型提供给返回ViewResult (可能还有PartialViewResults)的操作。
创建一个强类型的部分视图,使用菜单模型类实现全局菜单标记。通过MasterPage将其包含在RenderPartial定义中。将与键对应的ViewData项作为模型传递到部分视图,以便在菜单中使用模型的属性。
发布于 2018-09-12 12:48:30
这应该可以在视图中完成->
@System.Configuration.ConfigurationManager.AppSettings["AppSetting"]https://stackoverflow.com/questions/835249
复制相似问题