在Html.BeginForm中使用局部视图将空模型发送给控制器操作方法

问题描述 投票:0回答:1

我的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部分视图中正确显示。但是,当我单击“保存”按钮时,传递给Controller的模型为空。

家庭控制器方法如下:

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

但是为UpdateRequest收到的模型为null请帮助解决此问题。

Note:部分视图不包含任何其他BeginForm标记。如果在主视图中添加了部分视图的各个控件,则会填充模型对象。

c# model-view-controller razor asp.net-mvc-5
1个回答
0
投票

您是否检查过控制器回发时表单集合中包含的内容?我可能会猜测HtmlFieldPrefix已设置,这会导致您的表单控件具有一个与POCO不匹配的奇怪名称。

您可以通过使用以下命令使局部视图中的HtmlFieldPrefix与要设置的子对象相匹配:

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

HTH

© www.soinside.com 2019 - 2024. All rights reserved.