我有一个文本框,我定义为

<%= Html.TextBox("Username", Model.Form.Username,
        new { @class = "textbox", @disabled = "disabled" })%>

该 Action 被定义为
    [AcceptVerbs(HttpVerbs.Post)]
    [ValidateAntiForgeryToken]
    public ActionResult EditLogin(LoginForm post) {

        ...

        return View(model);
    }

当我 POST 到这个时, Username 将是空白的。所有其他属性都正确绑定(bind),但是如果我将 @disabled="disabled" 更改为 @readonly="readonly",则用户名绑定(bind)正确并且一切正常。

看起来模型绑定(bind)会忽略禁用字段中的值。有没有解决的办法?我仍然需要该字段的值来绑定(bind)到模型。我可以使用 readonly 但更喜欢使用 disabled 因此用户在视觉上很明显他们无法编辑字段的值。

最佳答案

我相信禁用的表单字段不会提交任何内容。如果您有一个表单并禁用该表单中的 foo 字段,那么当您发布帖子时, foo 字段的值将不存在。这只是在 HTML 中禁用字段的性质,而不是 MVC 问题。

关于asp.net - 带有禁用文本框的模型绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2653432/

10-16 17:11