是否可以包含部分文件中定义的部分?如果是这样,怎么样?
我的部分名为MetaTags.cshtml
,其中包含MetaTags
部分。我使用了一个部分,因为我希望视图能够在需要时使用自定义标记覆盖它 - 例如;对于博客帖子页面,用户可以添加自定义facebook元标记。该部分部分是为了使_Layout.cshtml
更易于管理和代码分离。
以下用法不起作用:_Layout.cshtml
<head>
@RenderSection("MetaTags", required: true)
<title>@ViewBag.Title - My ASP.NET Application</title>
...
</head>
答案 0 :(得分:0)
如果您在View(非部分视图)中设置该部分,它应该可以正常工作。
部分无法使用section,但您可以使用其他方式(如ViewBag或Custom Html帮助程序)来实现此目的。
以下是ViewBag方法的示例:
你的_Layout 中的
@Html.Partial("partial", new ViewDataDictionary { {"vb", ViewBag}})
@if (ViewBag.MetaInfo != null)
{
var metaDict = ViewBag.MetaInfo as IDictionary<string, string>;
if(metaDict != null)
{
foreach (var item in metaDict)
{
<meta name="@item.Key" content="@item.Value" />
}
}
}
</head>
然后在局部视图中:
@{
ViewBag.LayoutPageVB = ((dynamic)ViewData["vb"]);
var metaDict = new Dictionary<string, string>();
metaDict.Add("title", "c");
ViewBag.LayoutPageVB.MetaInfo = metaDict;
}
您将获得元标记标题为c
就个人而言,我认为这不是一个好方法,并不是部分更新布局的反应,而是实现您所需要的一种方式。