MVC 4 Actionlink参数未传递给控制器​​操作

时间:2013-09-09 11:57:51

标签: asp.net-mvc-4 parameters actionlink

我的MVC 4应用程序中有一个View,用户输入名字和姓氏并点击搜索按钮。一旦他们这样做,我的控制器中的一个动作被称为

[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>
}

理想情况下,我希望用户点击相应管理器旁边的“选择管理器”链接,但是,每当我测试它时,没有任何反应,我的控制器中的ChangeLineManager操作不会被调用。

有人对如何解决此问题有任何建议吗?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

动作链接将呈现给标记。当用户单击此标记时,GET请求将转到服务器,但在控制器中仅转发POST ChangeLineManager。 你需要添加这样的东西

[HttpGet]
public ActionResult ChangeLineManager(int? id)
{
    //some logic

}