c# - TextBoxFor @Value(大写)而不是@value

标签 c# asp.net-mvc keyword html.textboxfor

这只是出于好奇

为什么这段代码有效:

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/

相关文章:

c# - 通过表单从 HTML Razor View 传递列表

asp.net-mvc - 从 DropDownList 获取值,在 ActionLink (ASP.NET MVC4) 中使用它

python - Ruby 的 self vs. Python 的 self

MySQL 关键字结果

c# - 对象被销毁时 audio.play() 不工作

c# - 如何在 C# 中生成格式化的字母数字字符串

c# - 为什么 Java 不在其语言语法中使用 out 参数,而 c# 使用?

c# - 从 Azure 主题接收消息产生 null,主题有未读消息

sql-server - Elmah.MVC + NLog - 将所有错误存储在一个地方

css - Less CSS 关键字和语法的完整列表?