Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# mvc2“;没有为此对象定义无参数构造函数“;错误_C#_Asp.net Mvc_Parameters_Formcollection - Fatal编程技术网

C# mvc2“;没有为此对象定义无参数构造函数“;错误

C# mvc2“;没有为此对象定义无参数构造函数“;错误,c#,asp.net-mvc,parameters,formcollection,C#,Asp.net Mvc,Parameters,Formcollection,我知道以前很多时候都有人问过这个问题,但当这种情况发生在我身上时,我有点困惑 我有这样一个视图模型: public class RAssessment { [HiddenInput] public string rid { get; set; } [HiddenInput] public string NextPageAction { get; set; } [HiddenInput] p

我知道以前很多时候都有人问过这个问题,但当这种情况发生在我身上时,我有点困惑

我有这样一个视图模型:

public class RAssessment
    {
        [HiddenInput]
        public string rid { get; set; }

        [HiddenInput]
        public string NextPageAction { get; set; }

        [HiddenInput]
        public string PrevPageAction { get; set; }

        [HiddenInput]
        public string CodeType { get; set; }

        public MultiSelectList CA { get; set; }

        public MultiSelectList NonCA { get; set; }

        public List<SelectListItem> AXM { get; set; }

        public List<SelectListItem> IntOrders { get; set; }

        public List<SelectListItem> IntLang { get; set; }

        public List<SelectListItem> IntLang2 { get; set; }


        //Get RAssessment details
        public RAssessment(int id)
        {
            //get details
        }


        public RAssessment()
        {

        }

}
[HttpGet]
        public ActionResult RAssessment(int id)
        {
            RAssessment ra = new RAssessment(id);            
            return View("RAssessment", ra);            
        }

        [HttpPost]
        public ActionResult RAssessment(RAsessment ra, FormCollection formdata)
        {            
            if (ModelState.IsValid)  
            {
                :
                return RedirectToAction(blah);
            }
            return View();
        }
在我的页面视图中。。它具有页面声明:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/MasterPage/Template.Master" Inherits="System.Web.Mvc.ViewPage<xxxx.Models.RAssessment>" %>


当视图上发生提交时,它调用actionresult RAssessment,但出于某种原因,它给了我一个臭名昭著的“没有为该对象定义无参数构造函数”。(我知道传递model和formcollection听起来很奇怪,但在这种情况下我确实需要这样做)。对于这种情况,通常的答案是“因为您没有在模型中为RAssessment创建构造函数”,但正如您在我的模型中看到的,我已经创建了它,当我在空模型构造函数中放置细分时,actionresult确实会出现。如果我删除actionresult中的RAssessment参数,它确实可以工作,但我确实希望在actionresult中传递模型数据,然后执行一些复杂的模型验证。谁能告诉我正确的方向吗?谢谢WML

如果
MultiSelectList
将具有无参数构造函数,或者您将
[Bind(Exclude=“NonCA,CA”)]
添加到视图模型上方,我认为您将消除该错误。然后,在标记为
[HttpPost]
的操作中发生绑定时,这些属性将为null

这一切的原因是,当您有
HttpPost
时,它会尝试重新创建
rasessment ra
及其内部的所有属性/字段,并使用隐藏字段、文本字段等提供的值。不幸的是,目前它无法重新创建NonCA和/或CA


如果您检查MSDN,您可以看到它没有无参数构造函数。

如果使用Bind exclude,它确实解决了问题,但是如果存在任何模型验证错误,如何将multiselectlist数据重新填充回模型?我必须重新从头开始创建多重选择列表吗?感谢您可以从FormCollection获取或使模型绑定正常工作