문제

ASP.NET MVC Beta 5를 사용하는 사이트가 있으며 ASP.NET MVC 1.0으로 업그레이드했습니다. 드롭 다운 목록에서 선택한 항목에 문제가 있습니다.

팔로우 사람도 비슷한 질문을합니다 (ASP.NET MVC RC의 HTML.DropDownList (새로 고침) 사전 선택 항목이 아닙니다.)하지만 나는 대답이 없습니다 (버그가 아닌 것 외에는)

내 컨트롤러 메소드는 다음과 같이 보입니다.

[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이고 "이름"은 viewData.Model.comPanies 인스턴스에 보관 된 ILIST에 제공된 회사 객체의 문자열입니다.

이것이 실제로 버그입니까?- 왜 이것이 여전히 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 요소의 이름을 변경하는 것이 더 쉽다고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top