gpt4 book ai didi

asp.net-mvc-3 - asp.net mvc 3 中元标记的正确方法

转载 作者:行者123 更新时间:2023-12-02 19:53:17 25 4
gpt4 key购买 nike

您好,我不确定这是否是正确的方法,但我想构建一个带有动态元标记的网站。

一些元标记是硬编码到系统的,但有些需要动态加载,我应该能够在相应的操作中设置它们。

因此,我需要一个元标记来构建具有部分 View 之类的逻辑,甚至是子操作,但我不确定正确的方法。

我希望它能够工作,即使在操作中没有任何内容的情况下,(它应该加载默认值)

layout.cshtml 中的子操作是最好的方法吗?

最佳答案

您可以尝试使用 ViewBag 对象来实现此目的。我将使用字典,但如果元标记不是那么动态,您也许可以使用更强类型的东西。

在您的(Base?)Controller 构造函数中,在 ViewBag 中创建一个字典来保存元标记:

/* HomeController.cshtml */
public HomeController()
{
// Create a dictionary to store meta tags in the ViewBag
this.ViewBag.MetaTags = new Dictionary<string, string>();
}

然后要在您的操作中设置元标记,只需添加到字典中即可:

/* HomeController.cshtml */
public ActionResult About()
{
// Set the x meta tag
this.ViewBag.MetaTags["NewTagAddedInController"] = "Pizza";
return View();
}

或者,您甚至可以将其添加到 View (.cshtml) 中:

/* 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>

关于asp.net-mvc-3 - asp.net mvc 3 中元标记的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5815779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com