当我回发给我的控制器时,我模型的所有值都为空

nul*_*oid 0 c# asp.net-mvc

我已将模型切换回一个字段:

//模型

public class LetterViewModel
{
    public string LetterText;
}
Run Code Online (Sandbox Code Playgroud)

//控制器

public ActionResult Index()
{
    var model = new LetterViewModel();
    model.LetterText = "Anything";

    return View(model);
}

[HttpPost]
public ActionResult Index(LetterViewModel model)
{ 
    //model.LetterText == null
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

//视图

@model Test.Models.LetterViewModel
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
    ViewBag.Title = "Create a Letter";
}
@using (Html.BeginForm())
{
    <div id="Bottom">
        @Html.TextAreaFor(m => m.LetterText)
        <input type="submit" value="Ok" class="btn btn-default" />
    </div>
}
Run Code Online (Sandbox Code Playgroud)

当我检查开发工具中的网络选项卡时,它显示输入的值包含在请求中.但是,当HttpPost控制器被触发时,该字段为空.

小智 9

DefaultModelBinder不设置字段,仅属性的值.您需要更改模型以包含属性

public class LetterViewModel
{
    public string LetterText { get; set; } // add getter/setter
}
Run Code Online (Sandbox Code Playgroud)