2012-08-02 2 views
1

나는 웹 사이트에 드롭 다운 목록과 여러 목록이 있습니다. 의도 : 드롭 다운 목록에서 이름을 선택하면 목록에 선택한 이름과 관련된 데이터가 채워 져야합니다.DropDownList가 항상 0 값으로 돌아가는 이유는 무엇입니까?

드롭 다운 목록에서 다른 이름을 선택하면 0 색인과 관련된 이름이 항상 반환됩니다.

내가 선택한 이름이 표시되도록하려면 출처에서 무엇을 변경해야합니까?

ViewBag.ID_Artiest에 선택한 이름의 "키"값을 부여하려면 어떻게해야합니까?

<form id="form1" runat="server"> 
    <label for="ArtiestenLijst">Selecteer artiest:</label> 

    <% using (Html.BeginForm("OnChange", "HitdossierController", FormMethod.Post, new { ID_Artiest = "DoChange" })) %> 
    <% { %> 
     <%= Html.LabelFor(x => x.ID_Artiest)%> 
     <%= Html.DropDownListFor(
       x => x.ID_Artiest, 
       new SelectList(ViewBag.ArtiestenLijst, "Value", "Text"), 
       "-- Selecteer artiest --", 
       new 
       { 
        @onchange = @"this.form.submit();" 
       })%> 
    <%} %> <br /> 
    <br /> 
    <div id="divPartialView"> 
     <%= Html.Action("Detail_Hitdossier", new { AID_Artiest = ViewBag.ID_Artiest })%> <br /> 
    </div> 
</form> 

답변

0

빠른 답변 주셔서 감사합니다.

FormCollection을 사용하여 해결책을 찾았습니다. 선택 후 액션 인덱스를 다시 호출하지만 HttpPost로 오버로드됩니다. Index.aspx에서

당신은이 코드를 찾을 수 :

<% using (Html.BeginForm("Index", "Hitdossier", FormMethod.Post, new { id = "frmArtiest" })) %> 
<% { %> 
    <label for="ArtiestenLijst">Selecteer artiest:</label> 
    <%= Html.DropDownList("ID_Artiest", 
      new SelectList(ViewBag.ArtiestenLijst, "Value", "Text"), 
      "-- Selecteer artiest --", 
      new 
      { 
       @onchange = "document.getElementById('frmArtiest').submit();" 
      })%> 
    <br /> 
    <br /> 
    <div id="divPartialView"> 
     <%= Html.Action("Detail_Hitdossier", new { AID_Artiest = ViewBag.ID_Artiest })%> <br /> 
    </div> 
<%} %> 

을 ... 그리고 컨트롤러에 다음과 같은 한 ActionResult의 :

public ActionResult Index(int? AID_Artiest=810000) 
{ 
    ReadSelectie(AID_Artiest.Value); 

    ViewBag.ID_Artiest = _ArtiestInfoModel.ID_Artiest; 
    ViewBag.ArtiestenLijst = _ArtiestInfoModel.ArtiestenLijst; 

    return View(); 
} 

[HttpPost] 
public ActionResult Index(FormCollection ACollection) 
{ 
    int iID_Artiest; 
    int.TryParse(ACollection["ID_Artiest"], out iID_Artiest); 
    return Index(iID_Artiest); 
} 

public ActionResult Detail_Hitdossier(int? AID_Artiest) 
{ 
    int iID_Artiest = AID_Artiest ?? 810000; 

    return View(GetArtiestData(iID_Artiest)); 
} 
0

문제는 당신이 컨트롤러에 다시 게시 할 때, 당신은 당신의 드롭 다운 목록과 함께 "ViewBag.ArtiestenLijst"를 다시 채우기하지 않는 것을 가능성이 높습니다. Model을 사용하여 값을 저장하고 ViewBag를 사용하지 않을 것입니다. 이렇게하면 게시물에서 다시보기를 되돌릴 때 항목 목록이 계속 표시됩니다.

관련 문제