我有一个强类型视图,我尝试在按钮单击时将文本框中的输入传递给使用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();
}
答案 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。