[英]RedirectToAction to another Controller and passing parameters
我是C#的新手,特别是在ASP.NET MVC中。
我有我的HomeController ,它包含这个方法:
public ActionResult Error(Error error)
{
return View(error);
}
现在我有另一个Controller,里面有以下行:
return RedirectToAction("Error","Home", new { Error = (new Error("ErrorName","ErrorDescription"))} );
您可能会注意到,我正在尝试将Error对象传递给另一个控制器,然后将其传递给View。
我自己编写的Error类,没什么了不起的:
public class Error
{
public String name { get; private set; }
public String description { get; private set; }
public int number { get; private set; }
public Error(String name, String description)
{
this.name = name;
this.description = description;
number = 0;
}
}
我的问题是每次我尝试访问HomeController中的错误变量时,它都是null
。 我已经用谷歌搜索了一些帖子,但我不明白,为什么我的代码不起作用。 没有错误,只有这个空值对象..我感谢任何帮助! :)
DefaultModelBinder
无法基于查询字符串参数初始化实例或Error
类,因为您在所有属性上都private set
了private set
。
你的模型应该是
public class Error
{
public String name { get; set; }
public String description { get; set; }
public int number { get; set; }
public Error() // you must add a parameter-less constructor
{
}
public Error(String name, String description)
{
this.name = name;
this.description = description;
// number = 0; // no need for this - the default is 0
}
}
你也可以使用
return RedirectToAction("Error","Home", new { name = "ErrorName", description = "ErrorDescription"});
并删除两个构造函数
在命名匿名参数时,请尝试使用小写“error”。
return RedirectToAction("Error","Home", new { error = (new Error("ErrorName","ErrorDescription"))} );
我相信参数是按名称传递的,现在他无法将“Error”链接到方法的参数名称。
您不能在这样的URL中传递复杂对象。 您必须发送其组成部分:
public ActionResult YourAction()
{
// Here user object with updated data
return RedirectToAction("Error","Home", new {
name = "ErrorName",
description = "ErrorDescription",
number = 0
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.