我目前正在開發使用C#和Asp.Net MVC正在開發的應用程序。擴展方法不工作,因爲它應該
在其中一個用戶必須選擇的10 DropDowns
左右。所選值存儲在數據庫中。
例如:
DropDown
有1
Value
和Text
顯示爲First Main Fault
DropDown
有One
Value
和Text
出現First Sub Fault
現在,用戶可以回來和編輯記錄。所以我想向他們展示DropDown
,它已經被選中並存儲在數據庫中。
爲此,我利用下面的擴展方法
public static IEnumerable<SelectListItem> ToSelectListItems<T>(this IEnumerable<T> items, Func<T, string> textSelector, Func<T, string> valueSelector, Func<T, bool> selecter)
{
return items.OrderBy(item => textSelector(item))
.Select(item =>
new SelectListItem
{
Selected = selecter(item),
Text = textSelector(item),
Value = valueSelector(item)
});
}
我稱之爲作爲
var mainFaultSelectedDdl = mainFaults.ToSelectListItems(
m => m.MainFaultDescription,
m => m.Id.ToString(),
m => m.Id == mainFaultId); //mainFaultId here equals to 1. I've also tried m.Id.ToString() == mainFaultId.ToString() but still the same issue
var subFaultSelectedDdl = subFaults.ToSelectListItems(
s => s.SubFaultDescription,
s => s.SubFaultDescription,
s => s.SubFaultDescription == erst.SubFault); //erst.SubFault here equals to One
當調試我的代碼,我可以看到上述兩種DropDowns
Selected
被設置爲True
但在視圖中,未選擇MainFault DropDown
,但選擇了SubFault DropDown
。
有人可以告訴我哪裏出錯了請。
這是怎麼了,我目前的Serial.MainFault
值綁定到你的財產的價值,你的情況產生DropDown
視圖
@Html.DropDownListFor(m => m.Serial.MainFault, Model.MainFaultDdl, "Please select a main fault", new { id = "mainFaults", @class = "form-control main-ddl" })
@Html.DropDownListFor(m => m.Serial.SubFault, Model.SubFaultDdl, "Please select a sub fault", new { id = "subFaults", @class = "form-control main-ddl" })
你是如何在視圖中生成你的下拉列表的。當你綁定到模型 –
,你在哪裏設置'mainFaultId'和'erst.SubFault'的值,設置'SelectListItem'的'Selected'屬性會被忽略? – HimBromBeere
@StephenMuecke我已經更新了我的問題以包含視圖中的代碼。它適用於一個而不是另一個,這就是我困惑 – Code