使用BeginForm()将对象传递给控制器

时间:2014-07-08 13:00:06

标签: c# asp.net-mvc

我有一个强类型视图,我尝试在按钮单击时将文本框中的输入传递给使用BeginForm的动作。我的代码不断将null对象传递给控制器​​中的action方法。如何通过表单将对象传递给控制器​​?

@using (@Html.BeginForm("GetQueueInfoWorkorder","Home", FormMethod.Post, new { id = Model}))
{
    @Html.TextBoxFor(x=> x.ID);
    <input type="Submit" value ="Search" class="ui-button-icon-secondary"/>
}

这是动作方法:

[HttpPost]
public ActionResult GetQueueInfoWorkorder(UserResponse id)
{
    //Check queue complete
    int woNumber = Convert.ToInt32(id);
    tb_QueueCompleted completed = db.tb_QueueCompleted.SingleOrDefault(x => x.WorkOrderNumber == woNumber);
    if (completed != null)
    {
        var u = new UserResponse { ID = completed.QueueId.ToString() };
        GetLogInfoCompleted(u);
        return View("GetLogInfo");
    }

    //check queue pending

    return View();
}

2 个答案:

答案 0 :(得分:3)

我认为你相当接近,但要做出这些改变&amp;它应该按预期工作:

型号:

public class UserResponse
{
    public int ID{get; set;}
}

查看:

@model UserResponse
@using (@Html.BeginForm("GetQueueInfoWorkorder","Home"))
{
    @Html.TextBoxFor(x=>x.ID);
    <input type="Submit" value ="Search" class="ui-button-icon-secondary"/>
}

行动方法:

public ActionResult GetQueueInfoWorkorder(UserResponse model)
{
     int woNumber = model.ID;
...

答案 1 :(得分:1)

如果您的视图的@model是UserResponse,那么在提交此页面时,模型(UserResponse)将自动提交给控制器。你在哪里为视图声明了@model。