为什么{System.Web.Mvc.SelectList} DropDownList SelectedValue

时间:2012-11-10 20:41:28

标签: asp.net-mvc-3 selectedvalue html-select

我已经创建了一个DropDownList,如我上一个问题here

中所述

我一直试图弄清楚如何获取列表的选定值。我使用了提供的答案,但它返回的唯一内容是{System.Web.Mvc.SelectList} 我调试了它,确定“值”列中的字符串是{System.Web.Mvc.SelectList}

我在这里做错了什么?我一直在MVC失败,并且很擅长。

感谢您的帮助

1 个答案:

答案 0 :(得分: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" />
}