建立在@ Darin-Dimitrov模式上面回答,我将一个模型传递到一个局部视图,我加载到一个_Layout页面。
我需要从应用程序加载的外部资源加载网页,该网页将用作跨多个网站的页眉导航。这是在我的Global.asax.cs
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
Application["HeaderNav"] = GetHtmlPage("https://site.com/HeaderNav.html");
}
static string GetHtmlPage(string strURL)
{
string strResult;
var objRequest = HttpWebRequest.Create(strURL);
var objResponse = objRequest.GetResponse();
using (var sr = new StreamReader(objResponse.GetResponseStream()))
{
strResult = sr.ReadToEnd();
sr.Close();
}
return strResult;
}
这是我的控制器部分视图的操作。
public class ProfileController : BaseController
{
public ActionResult HeaderNav()
{
var model = new Models.HeaderModel
{
NavigationHtml = HttpContext.Application["HeaderNav"] as string
};
return PartialView("_Header", model);
}
}
我像这样在_Layout页面中加载了局部视图。
<div id="header">
@{Html.RenderAction("HeaderNav", "Profile");}
</div>
局部视图_Header.cshtml非常简单,只是装载来自应用程序变量的HTML。
@model Models.HeaderModel
@MvcHtmlString.Create(Model.NavigationHtml)
Application变量?如.config文件中的appSettings一样? (请更具体的说明) – 2011-03-12 23:28:27
@Brad,他意思是应用程序状态变量,如果你看看它的代码是非常特定的。 – 2011-03-12 23:32:10
@Brad:我认为他意味着应用程序状态对象中的值。 – Misko 2011-03-12 23:32:48