我的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 }
);
}
答案 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?
,就会出现这种情况。这与路由无关,因此您声称更改路线解决问题似乎不可能。
要解决此问题,首先需要确定尝试创建可空字符串的位置,然后从中删除可空字符。