asp.net,mvc2中Controller自定义函数传值的问题

yuanrong 2010-09-29 10:25:39
新建的一Controller如下:

namespace NerdDinner.Controllers
{
public class DinnersController : Controller
{
public void Index()
{
Response.Write("<h1>稍等</h1>");
}

public void Details(int iDinnerID)
{
Response.Write("<h1>您要查找的是:" + iDinnerID.ToString() + "</h1>");
}
}
}

在浏览器中访问:http://localhost:64295/dinners 能正常输出“稍等”;
但当访问:http://localhost:64295/dinners/details/12 的时候出错,提示:
对于“NerdDinner.Controllers.DinnersController”中方法“Void Details(Int32)”的不可以为 null 的类型“System.Int32”的参数“iDinnerID”,参数字典包含一个 null 项。可选参数必须为引用类型、可以为 null 的类型或声明为可选参数。

请问哪里出错了?谢谢。
...全文
294 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanrong 2010-10-03
  • 打赏
  • 举报
回复
谢谢。
Wilson_Zhong 2010-09-30
  • 打赏
  • 举报
回复
在浏览器中访问:http://localhost:64295/dinners 能正常输出“稍等”;
但当访问:http://localhost:64295/dinners/details/12 的时候出错

路由设置中id设置问题:
routes.MapRoute(
"Dinners",
"{control}/{action}/{iDinnerID}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional }
);
hustcyb 2010-09-30
  • 打赏
  • 举报
回复
路由映射不对,有两种解决方法:
1。将参数iDinnerID改为id,默认路由配置会自动映射id参数
2。修改Global.asax中的路由配置,添加一条iDinnerID的映射配置

public class MvcApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);

routes.MapRoute(
"Dinners",
"{control}/{action}/{iDinnerID}",
new {controller = "Home", action = "Index", id = 0 }
);

}

protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}

62,272

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧