定義しているテキストボックスがあります
<%= Html.TextBox("Username", Model.Form.Username,
new { @class = "textbox", @disabled = "disabled" })%>
アクションは次のように定義されます
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult EditLogin(LoginForm post) {
...
return View(model);
}
これにPOSTすると、Username空白になります。他のすべてのプロパティは正しくバインドされますが、ユーザー名に変更@disabled="disabled"すると正しくバインドされ、すべてが機能します。@readonly="readonly"
モデルバインディングは無効なフィールドの値を無視しているようです。これを回避する方法はありますか?モデルにバインドするには、フィールドの値が必要です。読み取り専用を使用できますが、フィールドの値を編集できないことがユーザーに視覚的にわかるように、無効を使用することをお勧めします。