【发布时间】:2019-03-26 17:08:53
【问题描述】:
我传递 viewmodel 来创建视图,我从下拉列表中选择几个属性,然后在数据库中创建新模型。问题是我必须从下拉列表中选择一个产品,然后单击按钮将产品添加到列表(在模型中定义)。您可以看到下面的代码,我遇到了传递产品 id 的问题,因为它始终为 null
SellsViewModel:
public class SellsViewModel
{
public List<Center> center { get; set; }
public List<Leader> leader { get; set; }
public List<Member> member { get; set; }
public List<Group> group { get; set; }
public Sell sell { get; set; }
public Guid productSelection { get; set; }
public IEnumerable<Product> product { get; set; }
public IEnumerable<Product> selectedProducts { get; set; }
}
创建.cshtml
@model Medical.ViewModels.SellsViewModel
@{
var addproduct = Model.product.Select(product => new SelectListItem
{
Text = product.Name,
Value = product.Id.ToString()
});
}
...
<div class="form-group">
<div align="right" class="col-md-2">
<b>Delivery</b>
</div>
<div align="center" class="col-md-2">
@Html.DropDownListFor(m => m.productSelection, addproduct, "-- Choose product --")
</div>
<div class="col-md-2">
<a asp-action="AddProducttoSell" method="post" asp-route-id="@Model.productSelection" class="btn btn-primary">Add</a>
</div>
</div>
控制器:
[HttpGet]
public IActionResult AddProducttoSell(Guid id)
{
var sProduct = _context.Products.FirstOrDefault(p => p.Id == id);
svm.selectedProducts.ToList().Add(sProduct);
return RedirectToAction(nameof(Create));
}
基本上,我希望当我在视图中选择产品时,将其添加到视图模型中的 selectedProducts 列表中,然后将其返回到视图中。之后,我会将新模型提交到数据库。
【问题讨论】:
-
asp-route-id="@Model.productSelection" 在渲染时间之前完成,并且绝对在用户选择 ddl 之前完成。你把值放在一个 foreach 循环中——比如行。
标签: asp.net-mvc asp.net-core model-view-controller