2015-07-13 106 views
0

我正在尝试批量编辑多行,其中我使用其他编辑状态的列表进行编辑。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

+1

你在执行'返回视图(模型)'之前设置**'m => m.Product.StatusId' **吗? –

+1

@MaximilianAst是的,我:)用控制器更新了问题,忘了添加它。 – Rovdjuret

+1

你在哪里定义'Product'我只能找到'Products' –

回答

1

item.Product.StatusId

item已经是Product所以尝试:

item.StatusId 

代替

item.Product.StatusId 
+0

对不起,这是我的错。我不小心把它放在那里。这就像你说的,但仍然无法正常工作:/ – Rovdjuret

1

由杜安解决g像这样insted:

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

似乎合乎逻辑。我完全忽略了。 :) –

+0

@MaximilianAst我高度赞赏所有建议/我从你那里得到的帮助,谢谢队友:) – Rovdjuret