ASP.NET MVC - 从数据库中提取和填充主页内容?

时间:2009-10-06 00:31:20

标签: database model-view-controller master-pages

如何从数据库中提取母版页内容并将其传递到母版页,以便我的视图继承自它?这是一个例子:

网站的客户端将拥有一个唯一的代码,我们称之为“TargetCode”,例如ABC123,ABC456等......这个唯一的代码将输入查询字符串,例如:mysite.com/ABC123。

每个“TargetCode”都会有不同的CSS,名称,地址,电话号码(所有页面都通用,所以这些将放在母版页中)和页面内容(大约2-3页,让我们打电话)这些页面索引,产品和更多信息)。

所以当我访问网站地址mysite.com / ABC123时,首先会查看数据库,检查代码是否存在,如果是,则拉取主页信息(css,姓名,地址,电话号码)并将其用于母版页。然后我将为其他Actions提取页面内容(Index,Products和MoreInfo),当然所有这些页面都将使用相同的主页内容。

非常感谢。

2 个答案:

答案 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,这样我就可以让您的控制器调用模型来获取您需要的资源,然后根据您的控制器视图调用绑定正确的视图。