我正在尝试使用RedirectToAction()将一个控制器中的一个操作发送一个字符串Id到另一个控制器中的另一个操作但是我一直得到一个空引用异常:
这是错误: 对象引用未设置为对象的实例。
我使用的RedirectToAction()方法:
return RedirectToAction("Index", "Assignments", new { cid = id.ToString() });
我得到的http请求:
HTTP:/本地主机:13501 /分配CID = CAIS132
而不是:
HTTP:/本地主机:13501 /约束/索引/ CAIS132 知道这是有效的
这是第一个动作:
//In Courses Controller
public ActionResult ManageCourse(object id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
return RedirectToAction("Index", "Assignments",new{cid=id.ToString()});
}
这是我的另一个动作:
//In Assignments Controller
public ActionResult Index(string id)
{
//Some Model retrieval from database using the givin Id
return View(model);
}
这是我的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 }
);
当我使用它时:
return RedirectToAction("Index", "Assignments", id.ToString());
我使用NullReference获取此URL:
HTTP:/本地主机:13501 /约束长度= 7
Index操作中的id属性为null! 有什么想法吗?
修改
解: 感谢@nurdyguy,
“嗯,那么属性不是问题。你试图发送的对象没有定义的.toString()方法,这就是你得到System.Object ......的原因。这是因为你的id是对象id,而class对象的定义太松散了。你需要更具体地定义你的id变量。“