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

本文关键字:控制器 对象 BeginForm 使用 | 更新日期: 2023-09-27 18:11:52

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

@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"/>
}

下面是actionmethod:

[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();
}

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

我认为你已经很接近了,但是做这些改变&它应该按预期工作:

模型:

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;
     //...
}

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