努力从下拉列表中获取值,将其传递到我的控制器以进行数据库插入。 它从下拉列表中的每个项目的简单类开始。
public class selectListUrgencyNum
{
public string Text { get; set; }
public string Value { get; set; }
}
然后在我的视图模型中,我创建了这些对象的列表..
public class createViewModel
{
public Change Changevm { get; set; }
public List<RequestType> rTypes { get; set; }
public List<selectListUrgencyNum> listUrgency { get; set; }
}
最后是我的控制器我填充此列表以显示在下拉列表中。
public ActionResult Create()
{
var urgNums = new List<selectListUrgencyNum>();
for(int i = 1; i < 6; i++)
{
urgNums.Add(new selectListUrgencyNum() { Text = i.ToString(), Value = i.ToString() });
}
var viewModel = new createViewModel
{
listUrgency = urgNums
};
return View(viewModel);
}
我只使用了1 - 5,以便更容易理解。
我的视图会像这样创建ddl。
<div class="form-group">
@Html.LabelFor(model => model.Changevm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
<select class="form-control" id="select">
<option> 1 = Least Urgent</option>
@foreach(var item in Model.listUrgency)
{
<option>@item.Text</option>
}
</select>
@*How do I grab the value of what is selected??*@
@Html.ValidationMessageFor(model => model.Changevm.UrgencyNum, "", new { @class = "text-danger" })
</div>
所以我不确定如何获得所选下拉选项的值,以便在我的插入中我可以访问它。可能是隐藏的?
如果我使用隐藏的,它看起来怎么样?
如果已经回答,请链接..
答案 0 :(得分:1)
如果您只想传递Text和Value,可以使用System.Web.Mvc中的SelectListItem
类,该类用于将项目传递到下拉列表。
public class CreateViewModel
{
public Change ChangeVm { get; set; }
public List<RequestType> Types { get; set; }
public List<SelectListItem> ListUrgency { get; set; }
}
在Controller Create()方法中,我们还创建了新的ChangeVm
var viewModel = new CreateViewModel()
{
ChangeVm = new Change(),
ListUrgency = urgNums
};
return View(viewModel);
在视图上,您可以使用Html.DropDownListFor
扩展方法,该方法将负责创建包含给定项目和专有名称的列表。
Html.BeginForm
将负责使用正确的“操作”网址和方法创建表单。
@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
<div class="form-group">
@Html.LabelFor(model => model.ChangeVm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-2">
@Html.DropDownListFor(model => model.ChangeVm.UrgencyNum, Model.ListUrgency, "Choose Urgency...")
@Html.ValidationMessageFor(model => model.ChangeVm.UrgencyNum, "", new { @class = "text-danger" })
</div>
<input type="submit" value="Submit"/>
</div>
}
然后在控制器中,您可以使用
[HttpPost]
public ActionResult Create(CreateViewModel vModel)
{
if(vModel?.ChangeVm?.UrgencyNum != null)
{
var chosenValue = vModel.ChangeVm.UrgencyNum;
}
return View(vModel);
}
如果一切顺利,您应该在vModel.ChangeVm.UrgencyNum中选择您的值
答案 1 :(得分:0)
将name
属性添加到select
。
<select class="form-control" id="select" name="selectedUrgency">
在控制器发布的操作中,假设我们有Create2
操作方法。我们可以从Request
对象中检索值。
[HttpPost]
public ActionResult Create2()
{
var value = Request["selectedUrgency"];
}
假设您的给定html包含<form>
标记,并且操作网址指向此操作方法。