如何从asp.net mvc3中的下拉列表中访问所选项目

时间:2012-11-06 08:33:02

标签: c# asp.net-mvc asp.net-mvc-3

我正在使用asp.net mvc3并使用以下模型填充创建视图

型号

public class CategoryModel
{
    public  int Id { get; set; }
    public string Name { get; set; }
    public  string URL { get; set; }
    public  string Description { get; set; }
    public  string Logo { get; set; }
    public  bool IsActive { get; set; }
    public  bool isPopular { get; set; }
    public IList<Category> Parentcategories { get; set; }

}

在我的创建视图中,我会像这样填充

查看

 <div class="editor-field">
        @Html.DropDownList("parentcategories", new SelectList(Model.Parentcategories.Select(c => c.Name), Model.Parentcategories.Select(c => c.Name)))
        @Html.ValidationMessageFor(model => model.Parentcategories)
    </div>

现在如何在我的控制器方法中访问所选项目

方式

 [HttpPost]
    public ActionResult Create( CategoryModel model , HttpPostedFileBase file)
    {
     // 
    }

感谢, 阿桑

3 个答案:

答案 0 :(得分:1)

试试这个:

public ActionResult Create(string parentcategories, CategoryModel model , HttpPostedFileBase file)

parentcategories将包含选定的option值。

答案 1 :(得分:1)

如上所述 Smartboy ,您应该使用DropDownListFor:
1.使用public int ParentCategoryId { get; set; }字段附加模型。
2.而不是使用@ Html.DropDownList使用:
@Html.DropDownListFor(m => m.ParentCategoryId, new SelectList(...))
3.服务器端可以保持不变:

[HttpPost]
public ActionResult Create(CategoryModel model)
{
   // 
}

其中model.ParentCategoryId将选择项目值 另请注意,您可以先为视图设置所选项目值:

public ActionResult Index()
{
  var model = CategoryModel();
  ...
  model.ParentCategoryId = some_selected_value;
  return View(model);
}

答案 2 :(得分:0)

详细信息:您可以直接从模型中访问它。

[HttpPost]
public ActionResult Create( CategoryModel model , HttpPostedFileBase file)
{
      var selectedCategory = model.parentcategories;  // something like that
}