【问题标题】:Why does my DropDownList always return back to the 0 value?为什么我的 DropDownList 总是返回 0 值?
【发布时间】:2012-08-02 11:43:49
【问题描述】:

我有一个带有下拉列表和几个列表的网站。意图是: 如果您在下拉列表中选择一个名称,列表中应填充与所选名称相关的数据。

如果您在下拉列表中选择其他名称,则始终返回与 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>

【问题讨论】:

    标签: c# asp.net-mvc razor html-select


    【解决方案1】:

    问题很可能是当您回发到控制器时,您没有使用下拉列表重新填充“ViewBag.ArtiestenLijst”。我会使用模型来存储您的值,而不是使用 ViewBag。这样,当您从帖子返回视图时,它仍将包含您的项目列表。

    【讨论】:

      【解决方案2】:

      感谢您的快速回答。

      我使用 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));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-24
        • 2023-02-02
        • 2016-09-16
        • 2020-05-25
        • 2013-02-26
        • 2013-06-25
        • 1970-01-01
        相关资源
        最近更新 更多