【问题标题】:Using partial view inside a Html.BeginForm sends null model to controller action method在 Html.BeginForm 中使用局部视图将空模型发送到控制器操作方法
【发布时间】:2020-08-12 21:30:35
【问题描述】:

我的 Get ActionMethod :

        public ActionResult GetData(int id)
        {
            TestModel testModel = new DataAccess().GetData(id);
            return View(testModel);
        }

View 


@model TestModel

@using (Html.BeginForm("UpdateRequest", "Home", FormMethod.Post))

{

    <div>
        @Html.Partial("_Information", Model.Information)
    </div>

    <input type="submit" id="btnSubmit" value="Save" />
}

数据在 _Information 部分视图中正确显示。但是当我点击保存按钮时,传递给控制器​​的模型为空。

Home Controller方法如下:

    [HttpPost]
    public ActionResult UpdateRequest(TestModel testModel)
    {
        new DataAccess().UpdateData(testModel);
        .....
    }

但为 UpdateRequest 接收的模型为空 请帮助解决此问题。

注意:局部视图不包含任何额外的 BeginForm 标签。 如果在主视图中添加局部视图的各个控件,则会填充模型对象。

【问题讨论】:

    标签: c# model-view-controller razor asp.net-mvc-5


    【解决方案1】:

    当控制器回发时,您是否检查过表单集合中的内容?
    我会冒险猜测正在设置 HtmlFieldPrefix,这会导致您的表单控件具有与您的 POCO 不匹配的奇怪名称。

    您可以在局部视图中使用 HtmlFieldPrefix 来匹配您想要设置的子对象:

    @ViewData.TemplateInfo.HtmlFieldPrefix = "Your sub object property name here"
    

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-03-14
      相关资源
      最近更新 更多