核心 MVC 标记帮助程序参数 ASP.NET 字符串文本



Razor 允许将 ASP.NET 核心 MVC 标记帮助程序的参数编写为相应属性声明中的内联 C# 表达式。但是,由于 HTML 属性由引号分隔,如果这样的表达式本身应该包含引号,语法是什么?

以下是 https://learn.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/authoring 的示例:

<website-information info="new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = 1638,
Approved = true,
TagsToShow = 131 }" />

如果WebsiteContext属性之一采用字符串文本,这将是什么样子?

如果将new表达式包装在@(...)中,则所有表达式都将被视为 C# 代码,因此不会有问题。

喜欢这个:

<website-information info="@(new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = "1638",
Approved = true,
TagsToShow = 131 })" />

由于我最初的答案有缺陷,这里有一种方法可以工作,我在类似于你的代码上测试过:

如果 CopyrightYear 是一个字符串,您可以做的是对外部引号使用单引号,对字符串使用双引号,如下所示:

<website-information info='new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = "1638",
Approved = true,
TagsToShow = 131 }' />

作为 Ron C 答案中描述的另一种解决方法,还可以将WebSiteContext构造代码放入单独的 Razor 代码块中,将结果存储在变量中。

@{
var context = new WebsiteContext {
Version = new Version(1, 3),
CopyrightYear = "1638",
Approved = true,
TagsToShow = 131 };
}
<website-information info="@context" />

相关内容

  • 没有找到相关文章

最新更新