我有一个像这样的简单bool属性的视图模型:
public bool HasAnyProductsThatRequirePhoneNumber { get; set; }
我正在使用标记帮助程序生成一个包含此值的HiddenField,如下面的代码所示:
<input type="hidden"
asp-for="@this.Model.HasAnyProductsThatRequirePhoneNumber" />
当呈现页面时,我获得以下HTML代码:
<input type="hidden"
id="HasAnyProductsThatRequirePhoneNumber"
name="HasAnyProductsThatRequirePhoneNumber"
value="True" />
如您所见,“value” - 属性已经以大写(带有大T)呈现。
有没有办法把它渲染成小写?当然我不能使用类似.ToString()。ToLower()的东西,因为你可以看到我只是手动指定asp-for属性而value-attribute被自动填充。
答案 0 :(得分:3)
没有。你不能!
代码将在布尔表达式/ proprety上调用ToString
方法。 ToString
method内部布尔值始终返回True
或False
public override String ToString()
{
if (false == m_value)
{
return FalseLiteral;
}
return TrueLiteral;
}
其中TrueLiteral
和FalseLiteral
是两个变量,其值为True
和False
internal const String TrueLiteral = "True";
internal const String FalseLiteral = "False";
但这并不能阻止您将值呈现为true
或false
。所有标记帮助程序都是,为输入呈现标记。因此,在您的情况下,您可以使用纯html替换对标记助手的调用,并手动设置输入的值。
<input type="hidden"
id="HasAnyProductsThatRequirePhoneNumber"
name="HasAnyProductsThatRequirePhoneNumber"
value="@Model.HasAnyProductsThatRequirePhoneNumber.ToString().ToLower()">
答案 1 :(得分:1)
添加'value'属性,然后添加.ToString()。ToLower()布尔值。 修改后的代码如下:
<input type="hidden"
asp-for="@this.Model.HasAnyProductsThatRequirePhoneNumber"
value="@this.Model.HasAnyProductsThatRequirePhoneNumber.ToString().ToLower()" />