1

ドロップダウンリストといくつかのリストがあるWebサイトがあります。ドロップダウンリストで名前を選択すると、選択した名前に関連するデータがリストに入力されます。

ドロップダウンリストで別の名前を選択すると、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>
4

2 に答える 2

0

迅速なご回答をありがとうございました。

FormCollectionを使用して解決策を見つけました。選択した後、アクションIndexを再度呼び出しますが、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));
}
于 2012-08-03T08:45:52.040 に答える
0

この問題は、コントローラーにポストバックするときに、「ViewBag.ArtiestenLijst」にドロップダウンリストを再入力していない可能性があります。モデルを使用して値を保存し、ViewBagは使用しません。そうすれば、投稿からビューを戻すときに、アイテムのリストが引き続き含まれます。

于 2012-08-02T11:49:39.987 に答える