【问题标题】:html.actionlink doesn't passing parameter to controller actionhtml.actionlink 没有将参数传递给控制器​​动作
【发布时间】:2011-02-18 15:43:06
【问题描述】:

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

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

我的控制器操作如下

public ActionResult SchoolDetails(string schoolId,_ASI_School schoolDetail) { schoolDetail = SchoolRepository.GetSchoolById(schoolId); 返回视图(学校详情); }

我不知道为什么上面的 schoolId 正在变为 null..

【问题讨论】:

    标签: asp.net asp.net-mvc


    【解决方案1】:

    您的参数在Url.Action 方法调用中被命名为id,而不是schoolId。 html 中的参数名称、控制器操作中的参数名称和路由定义中的参数名称必须匹配。此外,您的路线中必须有此参数。例如,如果您使用默认路由 a.k.a Controller/Action/{id},将操作中的参数重命名为 id。如果在您的路由中找不到该参数,它将被移至查询字符串参数,您可以在操作中使用Request.QueryString["id"] 访问它。

    【讨论】:

      【解决方案2】:

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

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

      并将您的 Action 更改为 Url.Action("SchoolDetails","School",new{schoolId =item.SchoolId})

      【讨论】:

        猜你喜欢
        • 2012-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多