【问题标题】:How to send string id to controller using actionlink如何使用 actionlink 将字符串 id 发送到控制器
【发布时间】:2017-06-24 13:08:09
【问题描述】:

我希望有链接链接这个 /查看/测试 只有当它像 /View/1 一样 int 时它才有效

我的视图操作链接

   @Html.ActionLink(item.className, "Viewe", "subject", new {id =item.className  },null)

我的控制动作

       public ViewResult Viewe(string id)
    {
        //some database
        return View();
    }

我收到此错误Server Error in '/' Application. 如果我将 id 更改为任何它可以正常工作但链接看起来像 这:查看?anything=par

错误图片

路线代码

           routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
           routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );

【问题讨论】:

  • 检查 App_Start 下的 Route.Config 文件。您将找到处理路线的代码 sn-p。默认情况下,它接受controller/action/id。为了接受“anything”作为参数并形成用户友好的 URL,您需要创建自定义路由并将“id”参数替换为“anything”。
  • 我仍然有同样的问题我不在乎我是否将参数用作“id”或“anything”,id 对我来说很好,但我仍然有同样的错误
  • 不要使用动作名称View,您正在隐藏View 控制器方法的无参数版本,它将尝试查找具有动作对应名称的.cshtml 文件。您最好采用以下方式:[ActionName("View")] public ViewResult ViewAction(string id)
  • 请拍下错误描述的快照并在上面的帖子中分享。这样会更有帮助。
  • 我已经用错误图像更新了问题,并且我已经更改了视图但仍然没有运气

标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-mvc-3 razor


【解决方案1】:

这对我有用

 @Html.ActionLink(item.ClassName, "Viewe", "Subject", new { Id = item.ClassName }, null)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-21
    • 2020-07-13
    • 2017-04-25
    • 1970-01-01
    • 2015-09-01
    相关资源
    最近更新 更多