ASP.Net Html.DropDownList Выбранный элемент не выбран
У меня есть сайт, который использовал ASP.Net MVC Beta 5, и я только что обновил его до ASP.Net MVC 1.0. У меня возникают проблемы с выбранным элементом в выпадающем списке.
У следующего человека есть аналогичный вопрос (Html.DropDownList в ASP.NET MVC RC (обновить), не предварительно выбрав элемент), но я не вижу ответа ( кроме этого может быть ошибка)
Метод My 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... Я был бы полностью счастлив, если бы это было что-то, что я сделал.
Независимо от того, что будет предлагаемой работой?
Спасибо
Ответы
Ответ 1
Оказывается, если имя вашего элемента управления через 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.