【问题标题】:Incremental Sequencing DropDownListFor Binding?增量排序 DropDownListFor 绑定?
【发布时间】:2010-03-30 17:32:59
【问题描述】:

我在表单中使用incremental sequencing for a collection of objects。除非我需要使用 DropDownListFor,否则一切正常。很多questions concerning binding a dropdown 并选择正确的值,这在我的情况下工作正常。但是,我不清楚控制器中的 HttpPost 操作应该有什么。这是我的代码:

型号

public class WorkRequestList
{
    public WorkRequest[] Requests { get; set; }
    public Vehicle[] Vehicles { get; set; }       
}

查看

 <% using (Html.BeginForm()) {%>
     <% for (var i = 0; i < Model.Requests.Count(); i++) { %>
        <%=Html.DropDownListFor(x => x.Requests[i].AssignedTo,new SelectList(Model.Vehicles,"Id","Name",Model.Requests[i].AssignedTo.Id)) %>
      <%}%>
 <%=Html.SubmitButton("TopSubmit","Submit") %>
<%}%>

发布的操作

[HttpPost]
public ActionResult Schedule(WorkRequestList form)
{
      //what goes here?
}

下拉列表可以很好地填充,它们可以很好地预先选择。但在回发 form.Requests.AssignedTo 为空。我假设车辆 ID 被发布回某处,但我如何在不通过 Request 魔术字符串循环的情况下实现这一点:

var id = Request["Requests[" + i + "].AssignedTo"];

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 html.dropdownlistfor


    【解决方案1】:

    这是另一种方法,因为如果没有明确的模型绑定器,我也无法绑定子对象:

    为您的响应定义一个新类:

    public class WorkRequestResponse 
    {
        public int AssignedTo { get; set; }
    }
    

    在页面上更改如下:(我将请求更改为WorkRequest)

    <% for (var i = 0; i < Model.WorkRequest.Count(); i++)
           { %>
        <%=Html.DropDownListFor(x => x.WorkRequest[i].AssignedTo, new SelectList(Model.Vehicles, "Id", "Name", Model.WorkRequest[i].AssignedTo.Id))%>
        <%}%>
    

    在你的控制器上绑定如下:

    public ActionResult Index([Bind(Prefix = "WorkRequest")]List<WorkRequestResponse> AssignedTo)
    {
        // AssignedTo is now populated
        WorkRequestList.WorkRequests = magic_assign_function(AssignedTo); 
        // manual model validation etc....
    }
    

    我很想看看是否有更直接的路线,因为这也困扰着我。

    【讨论】:

    • 我写了一个我正在使用的巨大丑陋的模型粘合剂。这看起来是一种更好的方法,将尝试一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多