在Action方法的参数中获取Null值

时间:2019-01-05 09:49:39

标签: asp.net asp.net-mvc asp.net-mvc-4 model-view-controller html.actionlink

我的操作方法参数中的值为空。

这是我的动作方法

 [HttpGet]
    public ActionResult ProjectData(int? formId)
     {
                if (formId == null)
                {
                    return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
                }

                return View();

            }
     }

这是我对动作链接的看法

@foreach (var projects in Model)
                {
                    int formId = Convert.ToInt32(@projects.FormId);

                <tr>
                    <td>@projects.Serial</td>
                    <td>@projects.ProjectName</td>
                    @*<td><a href="#">@projects.SurveyName</a></td>*@
                    @*<td>@Html.ActionLink(@projects.SurveyName, "ActionName", new { id = @projects.FormId })</td>*@

                    <td>@Html.ActionLink(@projects.SurveyName, "ProjectData" , "Home", new {id = formId}, null)</td>
                    <td>@projects.TotalSubmission</td>
                    <td>@projects.LastSubmissionTime</td>
                    <td>@projects.SubmissionToday</td>

                </tr>


                }

我正在使用用户定义类型模型的列表:

@model IEnumerable<MVC.ProjectInformation>

当我单击循环下的actionlink时,它应该将ID发送给控制器actionmethod,但是我总是得到参数null。 特定操作链接:

  

@ Html.ActionLink(@ projects.SurveyName,“ ProjectData”,“ Home”,新   {id = formId},为空)

我可以通过在View上调试来查看ID,但是在控制器的actionmethod上,我无法获取该ID值。

1 个答案:

答案 0 :(得分:2)

ActionLink的routeValues对象属性需要与控制器操作的参数匹配。

当前是

new { id = formId }

ProjectData的参数不匹配

public ActionResult ProjectData(int? formId)

更新以匹配

@Html.ActionLink(@projects.SurveyName, "ProjectData" , "Home", new {formId = formId}, null)