Asp.net mvc 3 asp.net mvc 3中元标记的正确方法
嗨,我不确定这是否是正确的方法,但我想建立一个动态元标签网站 有些元标记是硬编码到系统的,但有些需要动态加载,我应该能够在相应的操作中设置它们 所以我需要一个元标记构建逻辑,比如局部视图,甚至是子操作,但我不确定正确的方法 我希望它能工作,即使在一个动作中没有任何关于它的内容,(它应该加载默认值)Asp.net mvc 3 asp.net mvc 3中元标记的正确方法,asp.net-mvc-3,razor,Asp.net Mvc 3,Razor,嗨,我不确定这是否是正确的方法,但我想建立一个动态元标签网站 有些元标记是硬编码到系统的,但有些需要动态加载,我应该能够在相应的操作中设置它们 所以我需要一个元标记构建逻辑,比如局部视图,甚至是子操作,但我不确定正确的方法 我希望它能工作,即使在一个动作中没有任何关于它的内容,(它应该加载默认值) layout.cshtml中的childaction是最好的方法吗?您可以尝试使用ViewBag对象来实现这一点。我将使用字典,但如果元标记没有那么动态,您可能可以使用更强类型的东西 在(基本?)控制
layout.cshtml中的childaction是最好的方法吗?您可以尝试使用ViewBag对象来实现这一点。我将使用字典,但如果元标记没有那么动态,您可能可以使用更强类型的东西 在(基本?)控制器构造函数中,在ViewBag中创建一个字典以保存元标记:
/* HomeController.cshtml */
public HomeController()
{
// Create a dictionary to store meta tags in the ViewBag
this.ViewBag.MetaTags = new Dictionary<string, string>();
}
或者,您甚至可以将其添加到视图(.cshtml)中:
最后,在布局页面中,您可以检查字典是否存在,并循环输出每个条目的元标记:
/* _Layout.cshtml */
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
@if (ViewBag.MetaTags != null)
{
foreach (var tag in ViewBag.MetaTags.Keys)
{
<meta name="@tag" content="@ViewBag.MetaTags[tag]" />
}
}
</head>
/*\u Layout.cshtml*/
@视图包。标题
@if(ViewBag.MetaTags!=null)
{
foreach(ViewBag.MetaTags.Keys中的var标记)
{
}
}
/* About.cshtml */
@{
ViewBag.Title = "About Us";
ViewBag.MetaTags["TagSetInView"] = "MyViewTag";
}
/* _Layout.cshtml */
<head>
<title>@ViewBag.Title</title>
<link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
@if (ViewBag.MetaTags != null)
{
foreach (var tag in ViewBag.MetaTags.Keys)
{
<meta name="@tag" content="@ViewBag.MetaTags[tag]" />
}
}
</head>