那个文本区域是无效的

我有一个奇怪的问题,在过去的几个小时里,我感到很沮丧。 我似乎无法找到任何相关的东西; 也许我没有足够具体,因为我不知道如何正确地说出它,或者这是一个奇怪的独特问题。

用户填写更新帐户信息的表单,除了一个文本区域外,其他所有内容都可以正常工作。 一旦表单被POST,这个文本区域'(绑定到UserInfo属性Comments )的值就变为null。 Comments属性是唯一的属性是null。

何时发生
A)没有现有值,用户输入一个值,属性为空。
B)现有值,用户确实/不会改变任何东西/任何东西,属性为空。

我只会包含相关的代码,以保持干净和简单。 希望这已经足够了。

控制器操作

public ActionResult Edit_Information(long id)
{
    // Get user info from the database.
    // Return the view with the user info from the DB etc.
}

[HttpPost]
public ActionResult Edit_Information(long id, UserInfo userInfo)
{
    if (!this.ModelState.IsValid)
    {
        // Invalid
        return View(userInfo);
    }

    // Update the information in the DB.

    // Redirect the user back to their account.
}

Razor查看HTML

<div style="width: 700px; margin-left: auto; margin-right: auto; text-align: left">
@Html.ValidationMessageFor(x => x.Comments)
</div>
@Html.Partial("~/Views/Shared/_EditorSmiles.cshtml")
@Html.TextAreaFor(x => x.Comments, new { @class = "EditorArea profile-comments" })

UserInfo 模型

[Validator(typeof(UserInfoValidator))]
public class UserInfo
{
    public string Comments { get;set; }
}

是的,我在模型上使用FluentValidation。 我删除了它,看它是否是原因,但事实并非如此。

我试过的东西

  • 在POST操作中,我使用了FormCollection formCollection而不是UserInfo userInfo
  • 在POST操作中引发异常,以证明发布时该值为空。
  • 用不同的名称创建一个新的属性。
  • 在返回视图之前手动给该属性一个值。 该值在发布时变为空值。
  • 手动为POST属性赋予一个值来证明它不是DB或SQL。 这工作。
  • 从模型中删除Fluent Validation属性(如上所述)。
  • UserInfo userInfo之前使用[Bind(Prefix = "")] 。 这没有改变任何东西。
  • 让我感到沮丧的是我不得不问:到底是怎么回事? 难道我做错了什么? 我必须俯视一些东西。 在页面上还有另一个文本区域,它应该可以正常工作。 它只是Comments的文本区域,无论条件如何都始终返回空值。


    表单被如此包装:

    Html.BeginWindow();
    Html.BeginForm("edit_information", "user", FormMethod.Post, new { id = "profile" });
    <!-- other stuff goes in between here -->
    Html.EndForm();
    Html.EndWindow();
    

    Html.BeginWindow()生成一个表格(一个窗口),它被包裹在窗体中。 这显然导致部分表单无法正确发送。

    变成:

    Html.BeginForm("edit_information", "user", FormMethod.Post, new { id = "profile" });
    Html.BeginWindow();
    <!-- other stuff goes in between here -->
    Html.EndWindow();
    Html.EndForm();
    

    巴姆! 它再次运作。 这从来没有发生过,因为我以前做过没有任何问题。 我很高兴它是固定的。 我们都会犯错。

    链接地址: http://www.djcxy.com/p/9137.html

    上一篇: That text area of nullness

    下一篇: Thou shalt not inherit from std::vector