我想在我的表单中添加一个下拉列表,其中包含 2 个值userid
和username
我的下拉列表,并且我还想在单击按钮时获取用户选择的值。我是 MVC 的新手,到目前为止,我还没有在下拉列表上工作过,尝试了一些示例,但似乎没有任何东西可以按照我想要的方式工作。
问问题
2298 次
4 回答
0
我会跳过很多 MVC3 概念。如果你真的是 ASP.NET MVC 的新手,你应该看看一些教程。
此代码应该可以帮助您:
看法
@using (Html.BeginForm("ACTION NAME", "CONTROLLER NAME"))
{
<select name="select">
<option value="username" selected>User name</option>
<option value="userid">User id</option>
</select>
<input type="submit" />
}
行动
[HttpPost]
public ActionResult ACTIONNAME(string select)
{
//...
}
请注意:
ACTION NAME
并CONTROLLER NAME
在BeginForm
帮手处。您将不得不在您的代码中修改它select
名称(“select”)和动作中的参数名称(“select”)。这不是巧合,而是约定俗成。MVC 使用name
attr 绑定数据- 该
selected
选项的属性将使其成为默认选项
问候
于 2012-07-30T05:39:11.987 回答
0
查看您可以执行的一种方法是将模型属性中的列表作为绑定发送,对于值,您可以将其绑定到另一个属性,例如:
public class YourModel
{
public List<UserList> OptionList { get; set; }
public String YourValue{get;set;}
}
public class UserList
{
public String UserName{get;set;}
public String UserId{get;set;}
}
@Html.DropDownListFor(model => model.YourValue, Model.OptionList, "")
在帮助程序中有用于指定值和文本的覆盖选项。
请记住:
这是 StackOverflow。
即使是您尝试过的无效示例对于那些试图帮助您的人来说也很重要,因为他们正在为您花费宝贵的带宽。
于 2012-07-30T06:05:30.580 回答
0
您不需要为每个视图创建一个新的模型类,只需将其放在控制器上:
ViewBag.FieldName = new SelectList(new List<SelectListItem>() {
new SelectListItem { Value = "userid", Text = "User ID" },
new SelectListItem { Value = "username", Text = "User name" }
});
这在视图中:
@Html.DropDownList("FieldName")
于 2012-07-30T12:46:21.677 回答
0
您需要创建一个 SelectListItem 的集合,例如:
IEnumerable<SelectListItem> selectList = from c in areaListResponse.Item select new SelectListItem { Text = c.AreaName, Value = c.Id.ToString() };
将此 selectList 传递给您的视图:
return View(selectList);
在您的 cshtml 中:
@model IEnumerable<SelectListItem> @Html.DropDownListFor(m => m.RequestAreaName, Model)
如果您需要复杂的对象,您可能需要一个包装类,例如:
public class RaiseRequestModelWrapper { public IEnumerable<SelectListItem> GetModel { get; set; } public RaiseRequestModel PostModel { get; set; } }
于 2012-07-30T13:25:44.870 回答