TextBoxFor @Value(大写)代替@value

Die*_*ego 8 c# asp.net-mvc keyword html.textboxfor

这只是为了好奇

为什么这段代码有效:

Html.TextBoxFor(x => x.Age, new { @Value = "0"})
Run Code Online (Sandbox Code Playgroud)

这不是:

Html.TextBoxFor(x => x.Age, new { @value = "0"})
Run Code Online (Sandbox Code Playgroud)

注意大写的'V' @Value

我知道这value是一个关键字,但readonly它也是如此.没有必要使用@Readonly(大写'R').

有人有线索吗?

Cod*_*aos 6

InputExtensions.TextBoxFor特例案例中有一些属性名称,其中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"/>.

  • 它不会同时呈现"Value"和"value".它只是'价值'.(Mvc 4和Razor 2) (2认同)

Son*_*nül 3

我不是 100% 确定,但是,这可能value是属性中的关键字,readonly但不是。查看MSDN 的属性

在此输入图像描述

在此输入图像描述

  • 对我来说没有意义。“@”应该转义关键字,因此“@value”会生成一个名为“value”的属性。如果这不起作用,则一定是与“TextBoxFor”或 Razor 相关的一些奇怪问题,而不仅仅是因为是 C# 关键字。 (2认同)