我的MVC2视图中有以下代码:
<tr class="edit" style="display:none">
<td>
<%= Html.DropDownList("drpFields", new SelectList(Model.Fields, "FieldID", "NiceName", whiteout.FieldID)) %>
</td>
<td>
<%= Html.DropDownList("drpStartTimeh", new SelectList(Model.Hours, whiteout.StartHour.Hour.ToString("0,0")))%>
<%= Html.DropDownList("drpStartTimem", new SelectList(Model.Minutes, whiteout.StartHour.Minute.ToString("0,0")))%>
<%= Html.DropDownList("drpStartTimet", new SelectList(Model.AMPM, whiteout.StartHour.Hour > 12 ? "PM" : "AM"))%>
-
<%= Html.DropDownList("drpEndTime", new SelectList(Model.Hours, whiteout.EndHour.Hour > 12 ? (whiteout.EndHour.Hour - 12).ToString("0,0") : whiteout.EndHour.Hour.ToString("0,0")))%>
<%= Html.DropDownList("drpEndTimem", new SelectList(Model.Minutes, whiteout.EndHour.Minute.ToString("0,0")))%>
<%= Html.DropDownList("drpEndTimet", new SelectList(Model.AMPM, whiteout.EndHour.Hour > 12 ? "PM" : "AM"))%>
</td>
<td>
<%= Html.DropDownList("drprepeat", new SelectList(Model.RepeatList,whiteout.Repeats))%>
</td>
<td>
Active
</td>
<td>
<a class="icon-button-cancel" href='<%: Url.Action("EditWhiteOut", "Settings", new {Id = whiteout.WhiteoutID}) %>'>
<img src='<%: Url.Content("~/static/Images/expanded.png") %>' alt="Delete this device" />
</a>
<a class="icon-button-success" href="#">
<img src="/static/images/gear.png" alt="Edit this device" /></a>
</td>
<td>
</td>
</tr>
我想创建一个Whiteout类型的对象,并使用用户从下拉列表中选择的值填充它,并发送到settingcontroller的EditWhiteout操作方法,而不是仅传递新的{Id = whiteout.WhiteoutID}。我怎么能这样做?
请建议解决方案。
感谢。
答案 0 :(得分:0)
MVC提供了一些表单值的自动映射,从视图返回到控制器操作。通常你会使用强类型视图,即在页面顶部你会有一些东西
喜欢
Control Language="C#" Inherits="System.Web.Mvc.ViewPage<namespace.Whiteout>
下拉列表的名称需要与Whiteout类中的属性相匹配,并且控制器操作将期望模型类型的返回值,即
[HttpPost]
public ActionResult EditWhiteout(WhiteOut tseItem)
{ //method body here
剩下的应该就像魔法一样。如果您对下拉菜单感到困惑,有时更容易用简单的输入替换它们,直到您将发送/接收部分工作 - 然后更改为下拉列表。