Ba5*_*14n 6 c# asp.net asp.net-mvc asp.net-mvc-4
我是C#的新手,特别是在ASP.NET MVC中.
我有我的HomeController,它包含这个方法:
public ActionResult Error(Error error)
{
return View(error);
}
Run Code Online (Sandbox Code Playgroud)
现在我有另一个Controller,里面有以下行:
return RedirectToAction("Error","Home", new { Error = (new Error("ErrorName","ErrorDescription"))} );
Run Code Online (Sandbox Code Playgroud)
您可能会注意到,我正在尝试将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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,每当我尝试访问HomeController中的错误变量时,它就是null.我已经用谷歌搜索了一些帖子,但我不明白,为什么我的代码不起作用.没有错误,只有这个空值对象..我感谢任何帮助!:)
小智 6
在DefaultModelBinder无法初始化实例或您的Error基于查询字符串参数,因为你有课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
}
}
Run Code Online (Sandbox Code Playgroud)
你也可以使用
return RedirectToAction("Error","Home", new { name = "ErrorName", description = "ErrorDescription"});
Run Code Online (Sandbox Code Playgroud)
并删除两个构造函数