Asp.net core mvc 如何将嵌套的ViewModel从视图显示到控制器
我有下面的视图模型Asp.net core mvc 如何将嵌套的ViewModel从视图显示到控制器,asp.net-core-mvc,model-binding,asp.net-mvc-viewmodel,tag-helpers,Asp.net Core Mvc,Model Binding,Asp.net Mvc Viewmodel,Tag Helpers,我有下面的视图模型 public class ProductsViewModel { public IEnumerable<ProductViewModel> Products; public ProductViewModel Product; } 我用的是下面的表格 <input asp-for="@Model.Product.Name" /> <label>Description
public class ProductsViewModel
{
public IEnumerable<ProductViewModel> Products;
public ProductViewModel Product;
}
我用的是下面的表格
<input asp-for="@Model.Product.Name" />
<label>Description</label>
<input asp-for="@Model.Product.Description" />
<label>Value</label>
<input asp-for="@Model.Product.Value" />
描述
价值
我实施这一行动
public async Task<IActionResult> Post(Product model)
{
await productService.Create(model.Product.Name, model.Product.Description, model.Product.Value);
return RedirectToAction(nameof(Index));
}
公共异步任务发布(产品型号)
{
等待productService.Create(model.Product.Name、model.Product.Description、model.Product.Value);
返回重定向到操作(名称(索引));
}
但我收到的数据为null,因为操作需要Product.Name、Product.Description、Product.Value。
你知道如何从我的视角接收数据吗
固定的。这很有效
public IEnumerable<ProductViewModel> Products;
public string Name { get; set; }
public string Description { get; set; }
public decimal Value { get; set; }
公共数字产品;
公共字符串名称{get;set;}
公共字符串说明{get;set;}
公共十进制值{get;set;}
但我不喜欢这一团糟。如果有人有更好的解决方案?事实上,您的绑定方法没有错,您只是忘记了将
get和set
添加到ViewModel
public class ProductsViewModel
{
public IEnumerable<ProductViewModel> Products { get; set; }
public ProductViewModel Product { get; set; }
}
公共类产品视图模型
{
公共IEnumerable乘积{get;set;}
公共产品视图模型产品{get;set;}
}
谢谢,它成功了(:显然,我的post请求无法在没有{get;set;}的情况下将数据绑定到嵌套的ProductViewModel产品中。Hi@jetfuel,如果它成功了,请随时提供有用的答案,这将帮助其他面临同样问题的人找到解决方案。谢谢:)
public class ProductsViewModel
{
public IEnumerable<ProductViewModel> Products { get; set; }
public ProductViewModel Product { get; set; }
}