如何解决如何从ControllerMVC 2的下拉列表中获取选定的值
| 我正在努力从mvc的硬编码下拉列表中获取选定的值,以下是代码: 视图:<tr><td>No of Helmets</td><td><div class=\"editor-field\">
<%: Html.DropDownList(\"helmets\",(SelectList)ViewData[\"size\"],\"--select--\")%>
</div></td></tr>
<tr><td>No of Garages</td><td><div class=\"editor-field\">
<%: Html.DropDownList(\"garages\",(SelectList)ViewData[\"garages\"],\"--select--\")%>
控制器:
//头盔下拉菜单
[HttpPost]
public ActionResult Create(Event trackday,FormCollection formValues)
{Product product = new Product();//
ViewBag.mode = \"create\";
// for dropdown track
ITrackRepository trackResp = new TrackRepository();
IQueryable<Object> tracks = trackResp.GetVenuesSelectlist();
ViewData[\"Venue\"] = new SelectList(tracks,\"VenueID\",\"Name\");
var helmets = Enumerable.Range(1,200).Select(x => new SelectListItem { Value = x.ToString(),Text = x.ToString() });
ViewData[\"helmets\"] = new SelectList(helmets.ToList(),\"Value\",\"Text\");
// dropdown for garages
var garages = Enumerable.Range(1,50).Select(x => new SelectListItem { Value = x.ToString(),Text = x.ToString() });
ViewData[\"garages\"] = new SelectList(garages.ToList(),\"Text\"); product.QtyAvailable = Convert.ToInt32(formValues[\"garages\"]);
if (ModelState.IsValid)
{
trackday.DateAdded = DateTime.Now;
trackday.DateModified = DateTime.Now;
// productResp.Save();//
// trackday.Products.Add(product);
trackdayResp.Add(trackday);
trackday.Products.Add(product);
trackdayResp.Save();
return RedirectToAction(\"Index\");
}
else
{
return View();
}
}`
我如何在mvc post controller中获得上述2 dropdownlist的Selected值。
解决方法
您将下拉菜单称为“头盔”和“车库”,如果您调试操作并查看
formValues
字典,则应该看到这两个值。
或者,您可以更改模型以使其具有int类型的\“ Helmets \”和\“ Garages \”属性?模型联编程序应填充这些值。
或者,您可以将操作更改为:
public ActionResult Create(Event trackday,int? helmets,int? garages,FormCollection formValues)
应使用下拉列表的ID(选定值)填充。
更新资料
这是我的代码,该代码从集合或传递的属性中获取值:
HTML:
<asp:Content ID=\"Content2\" ContentPlaceHolderID=\"MainContent\" runat=\"server\">
<h2><%: ViewData[\"helmetsCollectionValue\"]%></h2>
<h2><%: ViewData[\"helmetsProperty\"]%></h2>
<h2><%: ViewData[\"garagesCollectionValue\"]%></h2>
<h2><%: ViewData[\"garagesProperty\"]%></h2>
<% using (Html.BeginForm()) { %>
<p>
<%: Html.DropDownList(\"helmets\",(SelectList)ViewData[\"size\"],\"--select--\")%>
</p>
<p>
<%: Html.DropDownList(\"garages\",(SelectList)ViewData[\"garages\"],\"--select--\")%>
</p>
<p>
<input type=\"submit\" value=\"Submit\" />
</p>
<% } %>
</asp:Content>
控制器:
public ActionResult Index()
{
var helmets = Enumerable.Range(1,200).Select(x => new SelectListItem { Value = x.ToString(),Text = x.ToString() });
ViewData[\"helmets\"] = new SelectList(helmets.ToList(),\"Value\",\"Text\");
// dropdown for garages
var garages = Enumerable.Range(1,50).Select(x => new SelectListItem { Value = x.ToString(),Text = x.ToString() });
ViewData[\"garages\"] = new SelectList(garages.ToList(),\"Text\");
return View();
}
[HttpPost]
public ActionResult Index(FormCollection collection,int? garages)
{
ViewData[\"helmetsCollectionValue\"] = collection[\"helmets\"];
ViewData[\"helmetsProperty\"] = helmets;
ViewData[\"garagesCollectionValue\"] = collection[\"garages\"];
ViewData[\"garagesProperty\"] = garages;
var helmetsList = Enumerable.Range(1,Text = x.ToString() });
ViewData[\"helmets\"] = new SelectList(helmetsList.ToList(),\"Text\");
// dropdown for garages
var garagesList = Enumerable.Range(1,Text = x.ToString() });
ViewData[\"garages\"] = new SelectList(garagesList.ToList(),\"Text\");
return View();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。