下拉列表......我存在的基本禍根......選定值未在下拉列表中設置從在的SelectList MVC
我已經看到了這個問題的確切無數話題,但一切我已發現在這裏和周圍的互聯網沒有解決我的問題。
有點背景第一: 我有一個頁面,允許用戶編輯記錄。編輯頁面上的其中一個字段是填充客戶端的下拉列表。要進入編輯頁面,用戶點擊另一頁上的編輯鏈接,並在其上有記錄表。當他們到達編輯頁面時,窗體將填充選定記錄中的信息進行編輯。除了登錄屏幕外,它可能是任何網站移動數據的最基本和最常見的功能之一。
所以,這裏是從視圖代碼:
@Html.DropDownList("ClientsDropdown", (IEnumerable<SelectListItem>)ViewBag.ClientsDropdown, "Select a Client")
,這裏是在控制器代碼:
[HttpGet]
public ViewResult Details(int id, int pageNumber = 1)
{
Invoice invoice = db.Invoices.Find(id);
FillClientDropdown(invoice);
var model = new InvoiceDetailsModel() { Invoice = invoice, PageNumber = pageNumber };
return View(model);
}
而且FillClientDropdown(發票)稱:
private void FillClientDropdown(Invoice invoice)
{
var clientList = db
.Clients
.OrderBy(x => x.Name)
.ToList()
.Select(x => new SelectListItem
{
Selected = (x.ID == invoice.ClientOcrStringID),
Text = x.Name,
Value = x.ID.ToString()
});
ViewBag.ClientsDropdown = new SelectList(clientList, "Value", "Text", "Selected");
}
我已經證實clientList確實從數據庫中獲得了一個很好的客戶列表,並且正確SelectListItem將「選定」屬性設置爲True。
但是當我加載頁面,檢查下拉列表中,這是我得到:
<select id="ClientsDropdown" name="ClientsDropdown">
<option value="">Select a Client</option>
<option value="1">Test Client 1</option>
<option value="2">Test Client 2</option>
我也能猜到,創建一個新的SelectList也將增加在選定=每種選擇都有「價值」,但似乎並非如此。
這個問題的任何幫助,將不勝感激,因爲它是相當令人沮喪,要知道,我可以在3分鐘左右已經這樣做了,如果我能夠使用Web窗體...
UPDATE
看起來像我得到它的工作!
這裏就是我所做的: 我已經有了一個InvoiceDetailsModel的工作,所以我說:
public SelectList ClientList { get; set; }
然後,在我的InvoiceController,我改變了我的詳細一點:
[HttpGet]
public ViewResult Details(int id, int pageNumber = 1)
{
Invoice invoice = db.Invoices.Find(id);
var clientList = db
.Clients
.OrderBy(x => x.Name)
.ToList()
.Select(x => new SelectListItem
{
Text = x.Name,
Value = x.ID.ToString()
});
var model = new InvoiceDetailsModel() { Invoice = invoice, PageNumber = pageNumber };
model.ClientList = new SelectList(clientList, "Value", "Text", model.Invoice.ClientOcrStringID);
return View(model);
}
可以充分利用我對InvoiceDetailsModel的補充。最後,在我看來,我改變了我的下拉菜單:
@Html.DropDownListFor(model => model.Invoice.ClientOcrStringID, Model.ClientList, "Select a Client")
我希望這可以幫助某人......未來的任何人。
我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –
哎呀,對不起! – user1059903