不知道为什么MVC5已经停止绑定文本框,只有当它是请求的一部分时才会显示该值,而不是我手动设置它。
这将打印正确的属性值:
@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 :(得分:0)
在“class”和“Location”之前,您不需要另一个@符号。我认为你正在尝试启动剃刀语法,当它已经启动并且让人感到困惑时。
尝试以下编辑:
@Html.TextBoxFor(m => m.MyStringField, new
{
class = "myCssClass",
placeholder = "Test",
autocomplete = "off"
})
@Html.TextBox("Location", Model.Location) // Prints value from postback
答案 1 :(得分:0)
在阅读another answer之后,关于在回发之后没有被读取的值,转换为HTML帮助程序,同时告诉使用模型值,实际上使用ModelState值。因此需要调用ModelState.Clear();
来重置它并强制它使用模型。