Asp.net mvc 4 MVC 4 Actionlink参数未传递给控制器操作
我在MVC4应用程序中有一个视图,用户在其中键入名字和姓氏并点击搜索按钮。一旦他们这样做,我的控制器中的一个动作被调用Asp.net mvc 4 MVC 4 Actionlink参数未传递给控制器操作,asp.net-mvc-4,parameters,actionlink,Asp.net Mvc 4,Parameters,Actionlink,我在MVC4应用程序中有一个视图,用户在其中键入名字和姓氏并点击搜索按钮。一旦他们这样做,我的控制器中的一个动作被调用 [HttpPost] public ActionResult ChangeLineManager(RegisterLineManagerModel model, int? id) { if (ModelState.IsValid) { if (id == null) { // Search for person
[HttpPost]
public ActionResult ChangeLineManager(RegisterLineManagerModel model, int? id)
{
if (ModelState.IsValid)
{
if (id == null)
{
// Search for person using model.SearchFName and model.SearchLName
}
else
{
// User has selected manager from returned list of people
}
}
}
一旦用户执行搜索,如果返回数据,我将列出数据
@foreach (var user in Model.LineManagers)
{
<tr>
<td>@Html.ActionLink(linkText: "Select Manager",
actionName: "ChangeLineManager",
controllerName: "Portfolio",
routeValues: new { id = (int?)user.ApplicantID }, htmlAttributes: null)
</td>
</tr>
}
@foreach(Model.LineManagers中的var用户)
{
@ActionLink(linkText:“选择管理器”,
actionName:“ChangeLineManager”,
控制人姓名:“投资组合”,
RouteValue:new{id=(int?)user.applicationId},htmlAttributes:null)
}
理想情况下,我希望用户单击相应管理器旁边的“选择管理器”链接,但是,每当我测试此操作时,都不会发生任何情况,控制器中的ChangeLineManager操作不会被调用
有人对如何解决这个问题有什么建议吗
感谢您的时间。操作链接将呈现到一个标记。当用户单击此标记时,获取请求转到服务器,但在控制器中仅显示POST ChangeLineManager。 你需要加上这样的东西
[HttpGet]
public ActionResult ChangeLineManager(int? id)
{
//some logic
}
为什么在操作中使用http postmethod@Rex因为当用户第一次执行搜索时需要它,即键入first和last name,然后单击submit按钮。@tgr您的操作方法正在查找两个变量RegisterLineManagerModel model,int?id、model和a id。