如何从数据库中提取母版页内容并将其传递到母版页,以便我的视图继承自它?这是一个例子:
网站的客户端将拥有一个唯一的代码,我们称之为“TargetCode”,例如ABC123,ABC456等......这个唯一的代码将输入查询字符串,例如:mysite.com/ABC123。
每个“TargetCode”都会有不同的CSS,名称,地址,电话号码(所有页面都通用,所以这些将放在母版页中)和页面内容(大约2-3页,让我们打电话)这些页面索引,产品和更多信息)。
所以当我访问网站地址mysite.com / ABC123时,首先会查看数据库,检查代码是否存在,如果是,则拉取主页信息(css,姓名,地址,电话号码)并将其用于母版页。然后我将为其他Actions提取页面内容(Index,Products和MoreInfo),当然所有这些页面都将使用相同的主页内容。
非常感谢。
答案 0 :(得分:1)
这是我目前所拥有的,似乎有效,但我不确定这是否是正确的方法:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
HomeRepository hr = new HomeRepository();
var result = filterContext.Result as ViewResult;
if (result == null)
return;
string TargetCode = string.Empty;
Controller control = filterContext.Controller as Controller;
System.Collections.Specialized.NameValueCollection query = filterContext.HttpContext.Request.QueryString;
if (query.Count > 0 && query["TargetCode"] != null && query["TargetCode"].ToString() != "")
{
TargetCode = query["TargetCode"].ToString();
}
if (string.IsNullOrEmpty(TargetCode))
if (control != null) control.HttpContext.Response.Redirect("./NoCode");
if (!hr.CheckTargetCodeExists(TargetCode))
{
if (control != null) control.HttpContext.Response.Redirect("./InvalidCode");
}
var ThemeData = hr.GetMasterPageContent(TargetCode);
result.ViewData["ThemeData"] = ThemeData;
}
我应该使用OnActionExecuting()还是OnActionExecuted()?
答案 1 :(得分:1)
您的主人还可以接收MasterPage System.Web.Mvc.ViewMasterPage.MasterViewModel
,这样我就可以让您的控制器调用模型来获取您需要的资源,然后根据您的控制器视图调用绑定正确的视图。