参数字典包含参数

时间:2016-12-20 23:54:38

标签: c# asp.net-mvc

我试图通过点击按钮完成待办事项,从而将其从列表中删除。

我使用ActionLink作为按钮:

@foreach (var item in Model)
{
   <li class="@item.Priority">
      @item.Text
      <div class="agile-detail">
         @Html.ActionLink("Done", "Complete", "Home", new { id = item.ToDoId }, new { @class = "pull-right btn btn-xs btn-primary" })
         <i class="fa fa-clock-o"></i> @item.Date
      </div>
   </li>
}

控制器中处理的非常短的动作:

public ActionResult Complete(int todoId)
        {
            using (var db = new KnightOwlContext())
            {
                DashboardHelper dashboardHelper = new DashboardHelper(db);

                dashboardHelper.CompleteToDo(todoId);

                return RedirectToAction("Index", "Home");
            }
        }

单击该按钮会生成以下URL:

  

http://site/Home/Complete/1

我已经找到了一个解决方案,到目前为止它看起来可能是任何问题。此外,ActionLink按钮位于局部视图中,因此我不确定这是否会因错误的路由设置而发生变化?对于路由,我只是使用Visual Studio中MVC项目附带的默认配置。

在缩小问题原因时遇到问题,以便先检查哪里?

1 个答案:

答案 0 :(得分:1)

方法中的参数为int todoId,但您没有传递任何值 - 您只传递名为id的参数的值。

将方法更改为

public ActionResult Complete(int id)

或更改链接以使用new { todoId = item.ToDoId },但这将添加查询字符串值,而不是路由值,除非您使用url: "Home/Complete/{todoId}"创建特定路径定义