另一個關於DropDownListFor
的問題沒有選擇「Selected」的值。 這裏是代碼:DropDownListFor - 不選擇「選定」的值
型號:
public class CreateEditAccountModel
{
[Required]
[Display(Name = "Permission")]
public int PermissionId { get; set; }
public IEnumerable<SelectListItem> Permissions { get; set; }
}
控制器:
[HttpGet]
[Authorize]
public ActionResult EditAccount(int id)
{
CreateEditAccountModel model = new CreateEditAccountModel();
model.Permissions = PermissionsAll();
return View("CreateEditAccount", model);
}
在這一點上,如果我把一個破發點上的回油管,將model.Permissions
包含適當IEnumerable<SelectListItem>
對象有多個項目,只有一個,它有Selected = true
。
查看:
@using (Html.BeginForm())
{
@Html.DropDownListFor(m => m.PermissionId, Model.Permissions)
}
呈現:
<select id="PermissionId" name="PermissionId">
<option value="">-- Select --</option>
<option value="1">Permission one</option>
<option value="2">Permission two</option>
</select>
出於某種原因,沒有對任何的選項和第一個選項沒有選擇的屬性被選中。
任何幫助表示讚賞。
UPDATE
看來它是與此article。總結本文的解決方案,我需要確保屬性名稱(@html.DropDownList
的第一個參數)不是與模型的任何現有屬性匹配。 有人可以解釋爲什麼會出現這種情況嗎?
它呈現下拉正確的,當我的觀點是這樣寫的:
@Html.DropDownList("PermissionIdNotMatching", Model.Permissions)
但是,它沒有任何邏輯意義上做到這一點,因爲其實我是想粘結劑能夠匹配選擇元素的名稱到模型屬性。否則,我不得不手動獲取像這樣的值:Request.Form["PermissionIdNotMatching"];
任何人有任何想法?
SOLUTION
見接受的答案,並給它的第一條評論。
PermissionId的值應該等於Select = true的SelectListItem.Value。嘗試model.PermissionId = Convert.ToInt32(lst.First(t => t.Selected).Value); 我也遇到了和你一樣的問題,令人驚訝的是編輯時選擇的值已經被選中,從那裏我發現PermissionId應該具有與所選擇的SelectListItem值相同的值。爲我工作。 – Brij 2013-10-26 05:03:41