这是我的查看代码:
- @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);
- }