Dropdownlist为批量编辑时始终选择第一个值

时间:2015-07-13 08:02:08

标签: asp.net asp.net-mvc razor html.dropdownlistfor

我尝试批量编辑多行,我在其中使用状态列表进行编辑。

但是,我的列表不会为每一行设置正确的值,因为它总是选择列表中的第一项。我一无所知,并且询问是否有人知道原因以及解决方案是什么。

仅在批量编辑时发生,而不在任何其他单行编辑视图中发生。区别在于我循环遍历列表来设置和呈现值。只是为了更清楚:)

提前致谢!

控制器

[HttpGet]
public ActionResult BatchEdit(string search, int organization)
{
    var products = _classService.Get(search, organization);
    var statusList = _productService.GetStatus();

    var batchEditViewModel = new BatchEditViewModel(products, statusList);

    return View("BatchEdit", batchEditViewModel);
}

视图模型

public BatchEditViewModel(List<Product> products, List<ProductStatus> productStatus)
{
    Products = products;
    ProductStatus = SetStatus(productStatus);
}
public IEnumerable<SelectListItem> ProductStatus { get; set; }

private IEnumerable<SelectListItem> SetStatus(IEnumerable<ProductStatus> productStatus)
{
    return new SelectList(productStatus, "Id", "Title");
}

查看

@foreach (var item in Model.Products)
{
   <div class="col-md-6 form-group">
       <label>Status</label>
       @Html.DropDownListFor(m => item.StatusId, Model.ProductStatus, new { @class = "form-control" })
   </div>
}

输出

enter image description here

2 个答案:

答案 0 :(得分:1)

SYNC

中的

item.Product.StatusId已经是item,请尝试:

Product

而不是

item.StatusId

答案 1 :(得分:1)

通过这样做来解决:

@Html.DropDownListFor(m => item.StatusId, new SelectList(Model.ProductStatus, "Value", "Text", item.StatusId), new { @class = "form-control status-select" })