代码之家  ›  专栏  ›  技术社区  ›  FosterZ

html.actionlink不将参数传递给控制器操作

  •  1
  • FosterZ  · 技术社区  · 14 年前

    我在将参数传递给控制器操作时遇到问题,我做了以下操作

        Url.Action("SchoolDetails","School",new{id=item.SchoolId})
    
    

    我的控制器动作如下

        public ActionResult SchoolDetails(string schoolId,_ASI_School schoolDetail)
        {
                schoolDetail = SchoolRepository.GetSchoolById(schoolId);
                return View(schoolDetail);
        }
    
    

    我不知道为什么上面的学校ID在运行中变为空。

    2 回复  |  直到 14 年前
        1
  •  3
  •   Branislav Abadjimarinov Ivan Choo    14 年前

    参数已命名 id 不是 schoolId Url.Action 方法调用。HTML、控制器操作和路由定义中的参数名称必须匹配。另外,您的路由中必须有这个参数。例如,如果使用默认路线A.K.A Controller/Action/{id} ,将操作中的参数重命名为id。如果在路由中找不到该参数,则该参数将移动到查询字符串参数,并且可以在操作中使用 Request.QueryString["id"] .

        2
  •  2
  •   Peilonrayz    7 年前

    您必须在中定义默认路由 Global.asax 到:

    routes.MapRoute(
             "Default",
             "Home",
             new { Controller = "Home", action = "Index", schoolId = UrlParameter.Optional }
    

    改变你的 Action Url.Action("SchoolDetails","School",new{schoolId =item.SchoolId}) .