MVC 5 TextBoxFor()不呈现绑定值

时间:2014-03-05 00:12:39

标签: c# asp.net-mvc forms

不知道为什么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

2 个答案:

答案 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();来重置它并强制它使用模型。