0

ここでの最後の質問で説明したように、DropDownListを作成しました

私はリストの選択された値を取得する方法を理解しようとしてきました。提供された回答を使用しましたが、返されるのは{System.Web.Mvc.SelectList} デバッグすることだけで、「値」列にある文字列は{System.Web.Mvc.SelectList}

私はここで何が間違っているのですか?私はMVCで惨めに失敗していて、それは初めてです。

お手伝いありがとう

4

1 に答える 1

0

コントローラでのアクションは次のようになります。

[HttpPost]
public ActionResult Index(int DropOrgId)
{
  System.Diagnostics.Debugger.Break();
  return null;
}

注意すべき重要な点は、「DropOrgId 」は、ビューで@ Html.DropDownList( " DropOrgID ")に渡した文字列名と同じであるということです。この名前は、HTML入力コントロールからの入力の値を格納します。この場合は

ソースは次のようになります。

<select id="DropOrgID" name="DropOrgID">...</select>

入力コントロールのIDは、MVCフレームワークがそのコントロールの値を探しているアクションのパラメーターと一致させる方法です。

これを示すサンプルアプリは次のとおりです。

クラス

  public class Organization
  {
    public int OrganizationID { get; set; }
    public string Name { get; set; }
  }

コントローラ

  public class HomeController : Controller
  {
    public ActionResult Index()
    {
      var orgs = new List<Organization>();
      foreach (var count in Enumerable.Range(1, 10))
      {
        var newOrg = new Organization();

        newOrg.OrganizationID = count;
        newOrg.Name = "Organization " + count.ToString();

        orgs.Add(newOrg);
      }

      ViewBag.DropOrgID = new SelectList(orgs, "OrganizationID", "Name", 3);

      return View();
    }

    [HttpPost]
    public ActionResult Index(int DropOrgID)
    {
      //You can check that this DropOrgID contains the newly selected value.
      System.Diagnostics.Debugger.Break();
      return null;
    }
  }

インデックスビュー

<h2>Index</h2>


@using (Html.BeginForm())
{
  @Html.DropDownList("DropOrgID")
  <br />
  <br />
  <input type="submit" value="Save" />
}
于 2012-11-11T01:54:10.583 に答える