这是我的查看代码:
@using(Html.BeginForm(new { SelectedId = /*SelectedValue of DropDown*/ })) { <fieldset> <dl> <dt> @Html.Label(Model.Category) </dt> <dd> @Html.DropDownListFor(model => Model.Category,CategoryList) </dd> </dl> </fieldset> <input type="submit" value="Search" /> }
如图所示,我需要将下拉选择值传递给BeginForm()Html帮助器中的操作.你的建议是什么?
解决方法
提交表单时将传递选定的值,因为下拉列表由< select>表示.元件.您只需调整视图模型,使其具有名为SelectedId的属性,例如,您将绑定下拉列表:
@using(Html.BeginForm() ) { <fieldset> <dl> <dt> @Html.LabelFor(x => x.SelectedId) </dt> <dd> @Html.DropDownListFor(x => x.SelectedId,Model.CategoryList) </dd> </dl> </fieldset> <input type="submit" value="Search" /> }
这假定以下视图模型:
public class Myviewmodel { [DisplayName("Select a category")] public int SelectedId { get; set; } public IEnumerable<SelectListItem> CategoryList { get; set; } }
将由您的控制器处理:
public ActionResult Index() { var model = new Myviewmodel(); // TODO: this list probably comes from a repository or something model.CategoryList = new[] { new SelectListItem { Value = "1",Text = "category 1" },new SelectListItem { Value = "2",Text = "category 2" },new SelectListItem { Value = "3",Text = "category 3" },}; return View(model); } [HttpPost] public ActionResult Index(Myviewmodel model) { // here you will get the selected category id in model.SelectedId return Content("Thanks for selecting category id: " + model.SelectedId); }