【发布时间】:2010-03-19 12:33:40
【问题描述】:
我在访问 ViewData 中的 id、area 和 theme 值时遇到问题。
它们正在我的操作过滤器中设置,但是当我到达 Site.Master 时,我无权访问它们。
任何帮助或建议都会很棒。
动作过滤器
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int SectionID = Convert.ToInt32(filterContext.RouteData.Values["Section_ID"]);
int CourseID = Convert.ToInt32(filterContext.RouteData.Values["Course_ID"]);
if (CourseID == 0)
{
filterContext.Controller.ViewData["Styles"] = (from m in _dataContext.Styles where m.Area_ID == SectionID select new {theme = m.Area_FolderName }).ToList();
}
else
{
filterContext.Controller.ViewData["Styles"] = (from m in _dataContext.Styles where m.Course_ID == CourseID select new { theme = m.Course_FolderName }).ToList();
}
}
}
Site.Master
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<%@ Import Namespace="Website.Models" %>
<%
foreach (var c in (IEnumerable<Styles>)ViewData["Styles"])
{
Response.Write(c.Theme);
}%>
【问题讨论】:
-
如果您将对 Website.Models 命名空间的引用添加到 web.config 的命名空间部分,则不需要在页面中声明,因为它将在全球范围内注册。
标签: asp.net-mvc linq