使用 Composite C1 的 Razor 中的三元函数不断将引号重写为实体
Ternary function in Razor using Composite C1 keeps rewriting quotes as entities
我试图在 Composite C1 函数中做一些非常直接的事情,但我相信 Composite 将函数的 HTML 输出视为 [=32] =] 导致问题。不幸的是,我找不到解决这个问题的方法。所以这是有问题的代码行:
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @(radioLabel.Trim() == inputValue.Trim() ? @"checked=""checked""" : "") />
最后的三元函数其实就是问题所在。输出最终应该是
checked = "checked"
但是引号变成了实体,最终变成了
checked="checked"
这是错误的图片
好吧,实际上有一个简单的方法可以使用下面的标准 if/else 逻辑来解决这个问题,但我仍然想知道这个问题的答案,因为我有很多 Composite C1 -ism 过去喜欢这样,想要一个解决方案。
@if(radioLabel.Trim() == inputValue.Trim())
{
<input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="checked" />
}
else
{
<input type="radio" name="@inputName" value="@radioLabel" required="@required" />
}
如何使用 Html.Raw():
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @(radioLabel.Trim() == inputValue.Trim() ? Html.Raw("checked=\"checked\"") : Html.Raw("")) />
还有 if 块而不是像这样的三元函数:
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @if(radioLabel.Trim() == inputValue.Trim()) { @Html.Raw("checked=\"checked\"") } />
我不是 Razor 方面的专家,但希望这会有所帮助:)
你做错了,把 Razor 当作一个 StringBuilder,尽管它比那更聪明。特别是在这种情况下,您应该使用 Conditional Attributes
正确的代码不是使用 Html.Raw,而是如果您不希望它被渲染,则将您的属性值设置为 null。
@{
string checked = radioLabel.Trim() == inputValue.Trim() ? "checked" : null;
<input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="@checked" />
}
我试图在 Composite C1 函数中做一些非常直接的事情,但我相信 Composite 将函数的 HTML 输出视为 [=32] =] 导致问题。不幸的是,我找不到解决这个问题的方法。所以这是有问题的代码行:
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @(radioLabel.Trim() == inputValue.Trim() ? @"checked=""checked""" : "") />
最后的三元函数其实就是问题所在。输出最终应该是
checked = "checked"
但是引号变成了实体,最终变成了
checked="checked"
这是错误的图片
好吧,实际上有一个简单的方法可以使用下面的标准 if/else 逻辑来解决这个问题,但我仍然想知道这个问题的答案,因为我有很多 Composite C1 -ism 过去喜欢这样,想要一个解决方案。
@if(radioLabel.Trim() == inputValue.Trim())
{
<input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="checked" />
}
else
{
<input type="radio" name="@inputName" value="@radioLabel" required="@required" />
}
如何使用 Html.Raw():
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @(radioLabel.Trim() == inputValue.Trim() ? Html.Raw("checked=\"checked\"") : Html.Raw("")) />
还有 if 块而不是像这样的三元函数:
<input type="radio" name="@inputName" value="@radioLabel" required="@required" @if(radioLabel.Trim() == inputValue.Trim()) { @Html.Raw("checked=\"checked\"") } />
我不是 Razor 方面的专家,但希望这会有所帮助:)
你做错了,把 Razor 当作一个 StringBuilder,尽管它比那更聪明。特别是在这种情况下,您应该使用 Conditional Attributes
正确的代码不是使用 Html.Raw,而是如果您不希望它被渲染,则将您的属性值设置为 null。
@{
string checked = radioLabel.Trim() == inputValue.Trim() ? "checked" : null;
<input type="radio" name="@inputName" value="@radioLabel" required="@required" checked="@checked" />
}