【问题标题】:MVC Model is null during post发布期间 MVC 模型为空
【发布时间】:2014-09-08 10:25:11
【问题描述】:

大家好,我在发帖时遇到问题,我的模型在 http 帖子上似乎为空,这很奇怪,在 get 方法期间没有问题,一切都按应有的方式填充,但在帖子模型期间为空。请帮忙。

查看

  @model ComplianceCheck.Models.ViewModel.ArrivalModel

  @for (int itemindex = 0, id = itemindex + 1; itemindex < Model.questionnaires.Count; itemindex++)
    {

        <tr>
            <td>
                @id
            </td>
            <td> 
                @Html.DisplayFor(modelItem => Model.questionnaires[itemindex].Description)
            </td>
            <td>
                YES
                @Html.RadioButtonFor(modelItem => Model.questionnaires[itemindex].Answer, true, new { id = "rbYes", @checked = "checked" }) 
                 NO
                @Html.RadioButtonFor(modelItem => Model.questionnaires[itemindex].Answer, false, new { id = "rbNo" })

            </td>
             <td>
                  @Html.DisplayFor(modelItem => Model.questionnaires[itemindex].WigsID)
             </td>
            <td>  

                  @Html.TextBoxFor(modelItem => Model.questionnaires[itemindex].Remarks, new { @style = "width:250px;" })
            </td>
        </tr>

型号

 public class ArrivalModel
{

    public ArrivalSearchModel searchModel = new ArrivalSearchModel();
    public List<ArrivalDataModel> data = new List<ArrivalDataModel>();
    public ArrivalSingleDataModel singledata = new ArrivalSingleDataModel();
    public List<ArrivalQuestionnaires> questionnaires = new List<ArrivalQuestionnaires>();
}

  public class ArrivalQuestionnaires
{
    public int QuestionID { get; set; }

    public string WigsID { get; set; }

    public string Area { get; set; }

    public string Description { get; set; }

    public bool Answer { get; set; }

    public string Remarks { get; set; }

}

控制器:删除一些代码以减少问题长度

//Get 工作正常..

 GET: /Questionnaires/ (Create)
      public ActionResult QuestionnairesList(string txtDate, string Flightno, string Checker)
        {
            ArrivalModel model = new ArrivalModel();

            List<ArrivalQuestionnaires> arrivalQuestionnaires = new List<ArrivalQuestionnaires>();

  foreach (Question questionnaires in ArrivalService.GetAllQuestionnaires("Arrival"))
                {
                    ArrivalQuestionnaires toAdd = new ArrivalQuestionnaires
                    {
                        QuestionID = questionnaires.QuestionID,
                        WigsID = questionnaires.Wig.WigsCode,
                        Area = questionnaires.Area,
                        Description = questionnaires.Description,
                    };
                    arrivalQuestionnaires.Add(toAdd);
                }

                model.questionnaires = arrivalQuestionnaires;
            }

            return View(model);
        }

}

问题出在这里,httppost 触发但模型为空

[HttpPost]
        public ActionResult QuestionnairesList(ArrivalModel model)
        {}

【问题讨论】:

  • 你的页面上有&lt;form&gt;标签吗?您能否使用任何浏览器开发工具检查发送回控制器的 POST 请求的内容是什么?
  • ArrivalModelArrivalSearchModelArrivalDataModelArrivalSingleDataModel)的任何其他属性是否具有名为 model 的属性?
  • 您的属性上没有 getter/setter - 您是否省略了一些代码?

标签: asp.net-mvc http-post


【解决方案1】:

你的模型没有 getter/setter

public class ArrivalModel
{
  // Add constructor if you want to initialize properties
  public ArrivalModel()
  {
    searchModel = new ArrivalSearchModel();
    data = new List<ArrivalDataModel>();
    singledata = new ArrivalSingleDataModel();
    questionnaires = new List<ArrivalQuestionnaires>();
  }
  public ArrivalSearchModel searchModel { get; set; }
  public List<ArrivalDataModel> { get; set; }
  public ArrivalSingleDataModel singledata { get; set; }
  public List<ArrivalQuestionnaires> questionnaires { get; set; }
}

【讨论】:

    【解决方案2】:

    问题是你的模型里面装满了集合,模型的绑定试试看这篇文章

    http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

    【讨论】:

    • 为什么会有问题?
    • 在这种情况下,MVC 的 defaultmodelbinder 可能无法重新创建对象的集合。
    【解决方案3】:

    为此,create editorTemplate for ArrivalQuestionnaires 然后绑定到ArrivalModel 中的数据。

    More information about editor Template

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-11
      • 1970-01-01
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多