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