首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TextBoxFor @Value (大写)代替@value

TextBoxFor @Value (大写)代替@value
EN

Stack Overflow用户
提问于 2013-01-03 16:01:24
回答 3查看 2.2K关注 0票数 8

,这只是好奇,

为什么这段代码能工作:

代码语言:javascript
复制
Html.TextBoxFor(x => x.Age, new { @Value = "0"})

但这并不是:

代码语言:javascript
复制
Html.TextBoxFor(x => x.Age, new { @value = "0"})

注意@Value中的大写“V”

我知道value是一个关键字,但readonly也是一个关键字,它可以工作。没有必要使用@Readonly (大写字母“R”)。

有人有线索吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-03 16:21:56

我不是百分之百确定,但是,这可能是value是属性中的关键字,而readonly不是。看看来自MSDN的属性

票数 3
EN

Stack Overflow用户

发布于 2013-01-03 17:03:53

InputExtensions.TextBoxFor特例有几个属性名,其中value(区分大小写)。这与C#关键字无关。

特别是,从expression参数获得的值优先于传递给htmlAttributes参数的名为value的属性。

看看你的例子:

  • 如果您使用Html.TextBoxFor(x => x.Age, new { @value = "0"}),它将编译,但是TextBoxFor将用值x.Age覆盖value属性。
  • 如果您使用Html.TextBoxFor(x => x.Age, new { @Value = "0"}),它将编译,并且您将在属性字典中获得两个条目,一个是"0",另一个是value,这是x.Age.I,期望输出是一些荒谬的东西,比如<input Value="0" value="..." type="text"/>
票数 6
EN

Stack Overflow用户

发布于 2013-03-07 12:54:36

我的猜测是,MVC代码很难找到Value,因为MS工程师希望您始终使用PascalCase属性名称,因为这是它们的典型约定,PascalCase避免了与非上下文关键字(如class )的冲突。注意PascalCase属性是如何以小写形式呈现的。

原因不是value是关键字,因为它是C#中的上下文关键字,在属性getter和setter中只有特殊的含义(因此在IDE中变成蓝色)。在传递给TextBoxFor的匿名类型中,它没有特殊的意义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14142511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档