ASP.NET MVC:为此对象未定义无参数的构造函数
ASP.NET MVC:为此对象未定义无参数的构造函数
服务器错误在\'/\'应用程序中。\n———————————————————————————————\n该对象没有定义无参数的构造函数。\n描述:在当前Web请求的执行过程中发生了一个未处理的异常。请查看堆栈跟踪以获取有关错误的更多信息以及错误在代码中的起源位置。\n异常详细信息:System.MissingMethodException:该对象没有定义无参数的构造函数。\n源错误:\n第16行:HttpContext.Current.RewritePath(Request.ApplicationPath, false);\n第17行:IHttpHandler httpHandler = new MvcHttpHandler();\n第18行:httpHandler.ProcessRequest(HttpContext.Current);\n第19行:HttpContext.Current.RewritePath(originalPath, false);\n第20行:}\n我正在根据Steven Sanderson的《Pro ASP.NET MVC Framework》一书进行操作。在第132页,根据作者的建议,我下载了ASP.NET MVC Futures程序集,并将其添加到我的MVC项目中。[注意:这可能是一个误导信息。]\n之后,我无法再加载我的项目。上述错误使我无法继续进行。\n我的问题不是“你能帮我修复我的代码吗?”\n相反,我想更一般地了解:\n
- \n
- 我应该如何解决这个问题?
- 我应该寻找什么?
- 可能的根本原因是什么?
\n
\n
\n
\n似乎我应该对路由和控制器有比现在更深入的了解。
ASP.NET MVC: No parameterless constructor defined for this object问题的出现原因是因为控制器的构造函数没有无参数的构造函数。在上述内容中,有一段代码示例显示了控制器的一个动作方法具有一个参数,但是需要一个没有参数的动作方法。因此,需要将动作方法的参数去除,改为没有参数的形式。
解决方法是将具有参数的动作方法改为没有参数的形式。可以通过去除参数来实现这一点。另外,还可以使用可选参数的方式来解决这个问题。在C#中,使用可选参数应该可以解决这个问题,但是在F#中可能不起作用。
此外,如果在Html.Action调用中使用了类似.Action("SomeAction", new { myParameter = "42" })的语法,请确保Html.Action调用中的参数名称与动作方法中定义的参数名称相匹配,以避免出现此问题。
解决此问题还可以使用Phil Haack的Route Debugger工具来调试路由。这个工具可以帮助定位路由问题。
ASP.NET MVC: No parameterless constructor defined for this object问题的原因是控制器的构造函数没有无参数的构造函数,解决方法是将具有参数的动作方法改为没有参数的形式,并确保Html.Action调用中的参数名称与动作方法中定义的参数名称相匹配。此外,还可以使用可选参数来解决问题,并使用Route Debugger工具来调试路由。
在ASP.NET MVC中出现"No parameterless constructor defined for this object"错误的原因是Model中使用了SelectList,而SelectList没有无参数的构造函数。解决方法是修改Model的定义,使用其他方式来实现相同的功能。
一种解决方法是将Model中的SelectList属性改为IEnumerable
public class MyViewModel { public Contact SelectedContact { get;set; } public IEnumerableContacts { get;set; } public MyViewModel() { Contacts = new List (); } }
另一种解决方法是使用一个扩展方法来创建下拉列表,这个方法接受一个IEnumerable
public static MvcHtmlString DropDownListForContacts(this HtmlHelper helper, IEnumerablecontacts, string name, Contact selectedContact) { // 创建一个List 对象,并根据传入的参数设置其属性值,最后返回一个DropDownList }
还可以使用IEnumerable
public class MyViewModel { public Contact SelectedContact { get;set; } public IEnumerableContacts { get;set; } }
以上是解决"No parameterless constructor defined for this object"错误的几种方法,希望对你有所帮助!
ASP.NET MVC: No parameterless constructor defined for this object - 出现原因和解决方法
在ASP.NET MVC开发中,有时会遇到一个错误:No parameterless constructor defined for this object(没有为该对象定义无参数构造函数)。这个错误通常出现在创建Model的实例时。具体原因是Model没有定义无参数的构造函数。
下面是一个示例代码:
public class MyController : Controller { public ActionResult Action(MyModel model) { } } public class MyModel { public MyModel(IHelper helper) // MVC不能调用这个构造函数 { // ... } public MyModel() // MVC可以调用这个构造函数 { } }
当我们向这个Action传递JSON数据时,就会出现类似的错误。原因是Model没有定义无参数的构造函数。
解决这个问题的方法是给Model添加无参数的构造函数。如果我们在Model中定义了构造函数,就必须同时定义一个无参数的构造函数,否则会出现这个错误。
另外,如果在Model中使用了元组(Tuple),也会出现类似的问题。如果只是使用了单个元组,比如`Tuple
如果你的类有依赖项并且想要在构造函数中注入它们,你可以使用依赖注入库来选择“注入构造函数”。
在ASP.NET MVC开发中,出现"No parameterless constructor defined for this object"错误的原因是Model没有定义无参数构造函数。解决方法是给Model添加一个无参数的构造函数或使用依赖注入库来选择注入构造函数。