2014-03-05 33 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