这只是出于好奇
为什么这段代码有效:
Html.TextBoxFor(x => x.Age, new { @Value = "0"})
这不是:
Html.TextBoxFor(x => x.Age, new { @value = "0"})
注意 @Value
中的大写“V”
我知道 value
是一个关键字,但 readonly
也是,而且它有效。没有必要使用 @Readonly
(带有大写的“R”)。
有人知道吗?
最佳答案
InputExtensions.TextBoxFor
特殊情况 cases 一些属性名称,其中 value
(区分大小写)。这与 C# 关键字无关。
特别是从 expression
获得的值参数优先于名为 value
的属性你传入htmlAttributes
参数。
看看你的例子:
如果您使用
Html.TextBoxFor(x => x.Age, new { @value = "0"})
它会编译,但是TextBoxFor
将覆盖value
值为x.Age
的属性评估为。如果您使用
Html.TextBoxFor(x => x.Age, new { @Value = "0"})
它会编译,你会在属性字典中得到两个条目,一个Value
那是"0"
, 和一个value
, 那是x.Age
.我预计输出会像
<input Value="0" value="..." type="text"/>
这样荒谬的东西.
关于c# - TextBoxFor @Value(大写)而不是@value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14142511/