2014-03-05 36 views
0

不知道为什么MVC5停止了绑定文本框,只有当它是请求的一部分时才显示该值,而不是如果我手动设置它。MVC5 TextBoxFor()不会显示绑定值

此打印正确的属性值:

@Html.Raw(Model.MyStringField) 

这将打印不具有值的输入框,即value=""

  @Html.TextBoxFor(m => m.MyStringField, new 
           { 
            @class = "myCssClass", 
            placeholder = "Test", 
            autocomplete = "off" 
           }) 

可能是什么回事?

MVC恨我,这些代码项目是在同一行,但返回不同的值:

Model.Location = "TEST"; 
@Html.Raw(Model.Location) // Prints TEST 
@Html.TextBox(@"Location", Model.Location) // Prints value from postback 

回答

0

把我们的阅读another answer关于未读值后回发是费尽HTML助手,同时告知使用模型值,实际使用的ModelState值之后。因此需要调用ModelState.Clear();来重置它并强制它使用该模型。

0

你并不需要“类”和“位置”之前另一个@符号。我认为你正在尝试启动剃刀语法,当它已经开始并且令人困惑时。

尝试这些编辑:

@Html.TextBoxFor(m => m.MyStringField, new 
          { 
           class = "myCssClass", 
           placeholder = "Test", 
           autocomplete = "off" 
          }) 
    @Html.TextBox("Location", Model.Location) // Prints value from postback 
+0

谢谢;但是@实际上是必须的,因为'class'是一个保留关键字,而@将其转义(不会在没有@的情况下编译),@“Location”创建一个文字字符串,所以停止Visual Studio将其强调为'localisable'字符串,因为在这种情况下它是一个变量名,并且不会在语言之间改变,因为它会弄乱表单变量。 – simbolo