Asp.net-Mvc
ASP.Net Html.DropDownList 選定的元素未選擇
我有一個使用 ASP.Net MVC Beta 5 的站點,我剛剛將它升級到 ASP.Net MVC 1.0。我在使用下拉列表中的選定項目時遇到問題。
關注者有類似的問題(Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item)但我沒有答案(除了它可能是一個錯誤)
我的 Controller 方法如下所示:
[AcceptVerbs(HttpVerbs.Get)] public ActionResult View(Guid id) { IntegrationLogic logic = new IntegrationLogic(new IntegrationLinq()); CompanyLogic companyLogic = new CompanyLogic(new CompanyLinq()); IntegrationContainer container = new IntegrationContainer(); container.Sources = logic.GetImportSource(id); container.Companies = companyLogic.GetCompanies(); // Returns a IList<company> container.SourceActions = logic.GetAllSourceActions(); // Returns an IList<SourceAction> container.SinkActions = logic.GetAllSinkActions(); container.SuccessActions = logic.GetAllSuccessActions(); container.FailureActions = logic.GetAllFailureActions(); container.Actions = logic.GetAllActions(); container.Watchers = logic.GetAllWatcherActions(); container.ChainActions = logic.GetAllChainActions(); return View("View", container); }該視圖是針對模型的強類型,如下所示
public partial class View : ViewPage<IntegrationContainer> {}視圖模板中的問題區域是:
<label for="Companies">Company: </label><%=Html.DropDownList("Companies", new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%>我正在創建一個下拉列表,所選項目實際上從未被選中 - 這就是問題所在。“item.CompanyID”是一個 Guid,“id”是一個 Guid,“name”是 IList 中提供的公司對象的字元串,該對象保存在 ViewData.Model.Companies 實例中。
這實際上是一個錯誤嗎?-我很難理解為什麼它仍然存在於 ASP.Net MVC 中……如果這是我所做的事情,我會非常高興。
無論如何,建議的解決方法是什麼?
謝謝
事實證明,如果通過 Html.DropDownList 控制項的名稱與集合對象的名稱相同,則會導致 ASP.Net MVC 出現問題。
因此,如果我更改以下程式碼:
<label for="Companies">Company: </label><%=Html.DropDownList("Companies", new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%>到:
<label for="Companies">Company: </label><%=Html.DropDownList("company", new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%>現在一切正常。這是因為模型上的集合名稱是 Model.Companies …. bonkers … 另請注意,將控制項名稱的大小寫從“公司”更改為“公司”也不起作用(這使得感覺我想)。
我可以更改模型,但由於它大部分是使用 Linq-to-SQL 建構的,我認為更改 Html 元素的名稱更容易。