发布到控制器时,部分viewmodel为null

旋转医生

我有一个包含其他视图模型的视图模型。

public class AggregateVM
{
    public BrandVM BrandVM { get; set; }
    public TinTypeVM TinTypeVM { get; set; }
}

当我向控制器操作http发布时,TinTypeVM会填充有我编辑过的值,但是我使用了partial的BrandVM视图模型始终为null。

这是视图。

@model SaveEF.ViewModels.AggregateVM
@using (Html.BeginForm("EditAggregate", "Aggregate")) 
{
    @Html.Partial("_EditBrand", Model.BrandVM)

    @Html.Label("Tin Name")
    @Html.EditorFor(model => model.TinTypeVM.Name)
    <input type="submit" value="Save" />
}

这是局部视图。

@model SaveEF.ViewModels.BrandVM
@Html.Label("Brand Name")
@Html.EditorFor(model => model.Name)

这是控制器动作。

public ActionResult EditAggregate(AggregateVM vm)
{
    SaveBrand(vm.BrandVM);
    SaveTinType(vm.TinTypeVM);
    return RedirectToAction("Index");
}

如何在视图中使用局部视图,并且仍将单个视图模型传递给EditAggregate操作?我在Html.BeginForm(“ EditAggregate”,“ Aggregate”,FormMethod.Post,new {vm = Model})中尝试了不同的参数,但这没有帮助。

编码义

简短答案

您也需要传递AggregateVM到局部。

长答案

您现在的操作方式是:

@model SaveEF.ViewModels.BrandVM
@Html.EditorFor(model => model.Name)

因此,如果您要检查name为编辑器生成的是Name因此,当您发布时,MVC的默认模型绑定器将在视图模型中寻找匹配的属性。但是您查看模型是这样的:

public class AggregateVM
{
    public BrandVM BrandVM { get; set; }
    public TinTypeVM TinTypeVM { get; set; }
}

而且没有Name财产。

固定

您也需要传递AggregateVM到局部。

@model SaveEF.ViewModels.AggregateVM
@Html.EditorFor(model => model.BrandVM.Name)

现在编辑器的名称为BrandVM.Name因此,当您发布时,默认的模型绑定器将查找该属性BrandVM.Name并找到它。因此它将填充它。

另一种选择是name通过使用@Html.Editor或传递属性来自己指定属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从局部视图到控制器的ajax发布为null

发布到控制器时,图像值为空

将模型发布到控制器后,ViewModel内容为空

ViewModel,View和PartialView发布到控制器

将文件发布到spring控制器时,当前请求不是多部分

Ajax发布到ASP.net MVC控制器-对象属性为null

在发布到控制器的表单上,模型始终为NULL

将数据发布到控制器 Asp.Net Core MVC 时模型为空

当发布到ASP.NET Core中的控制器时,所有值均为null

通过ajax发布到控制器的模型为空

尝试发布到控制器时收到 404 错误

从Yii从控制器传递到视图时,该值为null

AJAX发布到ASP.NET MVC 6控制器的操作方法和参数为null

JQUERY ajax将JSON发布到C#MVC控制器,但是传入的数据为null

我正在使用Ajax发布到Mvc中的控制器,但是我的var在foreach中重置为null

如何将数据从ViewModel发布到控制器方法中?

Ajax 发送数据到控制器时为空

从视图传递到控制器时,列表返回null

Ajax 发布到控制器 404

使用外键发送发布请求-控制器为外来数据设置为null

回发到控制器操作时,控制器的ASP ViewModel(模型不是模型=> model.FieldName)变为null

当我未按顺序选择复选框时,POST到MVC控制器IEnumerable嵌套模型为null

将文件发布到控制器-IFormFiles始终为空

发布到MVC6控制器的值为空

如何在控制器中将文件发布到变量(类型为'HttpPostedFileBase')

jQuery Ajax发布到MVC控制器不起作用(返回null)

使用 angularjs 将 NULL 数据发布到 asp.net 核心控制器

在 .net core 中发布到控制器时,无法让 .ajax 给出一个值

发布到MVC控制器时使用DataAnnotations排除特定字符串