填充并将复杂对象从MVC2视图传递到控制器操作

时间:2011-06-01 18:09:23

标签: asp.net asp.net-mvc-2 entity-framework-4

我的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}。我怎么能这样做?

请建议解决方案。

感谢。

1 个答案:

答案 0 :(得分:0)

所有链接的第一个将导致获取而不是发布。您需要使用附加到超链接的javascript函数来对控制器上的操作执行POST。

<a class="icon-button-cancel" onclick="return SomeFunction(this)" href='<%: Url.Action("EditWhiteOut", "Settings", new {Id = whiteout.WhiteoutID}) %>'>

function SomeFunction(obj)
{

 document.forms[0].action = obj.href;
 document.forms[0].submit();
 return false;
}

请同时将whiteout.whiteoutID存储在隐藏字段中。

 ActionResult EditWhiteout (Whiteout whiteout)

{  你的代码就在这里。     }