关于ASP.NET MVC的问题

「已注销」 2010-01-27 12:19:25
初学.net的mvc,碰到一个麻烦问题,希望看到的大大能帮忙提出解决方法

问题描述:
在项目里面的一个department的控制器里面我只声明了一个带有INT参数的Edit action,但是访问URL department/edit/1的时候总是提示接受的id值不能为空, 至于global里面的路由配置采用的就是那个默认配置。。 不知道是什么原因,昨天还能正常访问,但是今天不管怎么调试都是同一个错误提示: The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method


Global路由配置如下:

// Default Route
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
...全文
214 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-01-30
  • 打赏
  • 举报
回复
问题解决。。谢谢2位大大帮忙~~~ 问题原因在于由于另外自定义了一个路由,虽然链接的时候指定了使用defaults路由,但是仍然匹配的那个自定义路由。。。 自己乌龙了~~ 不过比较抑郁的是为什么指定了使用路由的名字,可最后用的还是在路由表里面最先被匹配的那个。。。。 不知道这个算不算BUG,抑或还是自己不会玩MVC的路由~~~
丰云 2010-01-28
  • 打赏
  • 举报
回复
试试看
public ActionResult Edit(int? id)
{
var department = departmentRepository.GetDepartment(id);
if (department == null)
return View("Error");

var selectList = GetSelectList(department.ParentID);

ViewData["list"] = selectList;

return View(new DepartmentFormViewModel(department));
}

「已注销」 2010-01-27
  • 打赏
  • 举报
回复
而且控制器里面就定义了唯一的这么一个Edit Action
「已注销」 2010-01-27
  • 打赏
  • 举报
回复
大大 = =| 我还是贴源码吧~~

public ActionResult Edit(int id)
{
var department = departmentRepository.GetDepartment(id);
if (department == null)
return View("Error");

var selectList = GetSelectList(department.ParentID);

ViewData["list"] = selectList;

return View(new DepartmentFormViewModel(department));
}


访问的URL是 servername/department/Edit/1

貌似这个1传递过去的是int类型么。。。 不知道是不是路由问题
wuyq11 2010-01-27
  • 打赏
  • 举报
回复
参数ID与方法的参数类型不一致,可空类型

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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