MVC 4 Action方法可空字符串参数必需的错误

时间:2015-03-13 06:38:59

标签: c# asp.net-mvc

我的MVC4项目中有以下代码(vs2010),我是这个MVC的新手。请帮忙

   public ActionResult ViewAlbum(string id)
    {
            var searchStr = id;
            TB_ALBUM_MASTER tb_album_master = db.TB_ALBUM_MASTER.Single(t => t.ALBUM_NAME.ToLower() == searchStr.ToLower());
            if (tb_album_master == null)
            {
                return HttpNotFound();
            }
            return View(tb_album_master);

    }`

它在动作方法定义行

上给出了这个错误
  

错误131类型'字符串'必须是不可为空的值类型才能将其用作参数' T'在通用类型或方法中,System.Nullable'

这是我的RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

2 个答案:

答案 0 :(得分:0)

最后我才知道我需要修复我的RouteConfig.cs以启用我的新路由,其中​​id参数将是一个字符串,它可以为null。

所以这是我的修复:这是我的新RouteConfig.cs

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Defaults",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = "" }
        );

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

    }

(请建议我处理此类异常的错误方法,或者是否有任何其他修复方法。)

答案 1 :(得分:0)

此错误消息:

  

错误131类型'字符串'必须是不可为空的值类型才能将其用作参数' T'在通用类型或方法中,System.Nullable'

表示您正在尝试将字符串用作System.Nullable的参数。 System.Nullable仅适用于值类型,字符串不是,它是引用类型(并且已经可以为空)。

如果您在某处写过Nullable<string>string?,就会出现这种情况。这与路由无关,因此您声称更改路线解决问题似乎不可能。

要解决此问题,首先需要确定尝试创建可空字符串的位置,然后从中删除可空字符。