2015-07-13 55 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

相關問題