Asp.net-Mvc

ASP.Net Html.DropDownList 選定的元素未選擇

  • February 25, 2013

我有一個使用 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 元素的名稱更容易。

引用自:https://stackoverflow.com/questions/1206391