奇怪的错误:没有为此对象定义无参数构造函数

时间:2014-03-25 21:45:40

标签: c# asp.net-mvc asp.net-mvc-4

我知道这已被多次询问但我无法解决我的问题非常有趣。

我的模型很简单:

public class RegisterModel
    {
        [Display(Name = "First name")]
        [Required]
        public string FirstName { get; set; }
        [Display(Name = "Last name")]
        [Required]
        public string LastName { get; set; }

        [Display(Name = "Email address")]
        [RegularExpression(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$", ErrorMessage = "Enter valid e-mail")]
        [Required(ErrorMessage = "E-mail is empty")]
        public string EmailAddress { get; set; }

        public System.Web.Mvc.SelectList Countries { get; set; }
    }

动作:

[AllowAnonymous]
        public virtual ActionResult Register(RegisterModel data)
        {
            if (!HttpContext.User.Identity.IsAuthenticated)
            {
                ModelState.Clear();

                var countries =
                    this.ClientRepositoryBuilder
                        .CountryClientRepository
                        .GetAllCountries();

                data.Countries = new SelectList(countries, "Id", "CountryName");

                return
                    this.View(data);
            }
            else
            {
                return
                    this.RedirectToAction(MVC.Home.Index());
            }

        }

只要我将国家/地区添加到我的模型中,内容就会停止工作,并且它不会调用POST操作,请使用firebug给出错误(它的ajax帖子):

  

没有为此对象定义无参数构造函数

2 个答案:

答案 0 :(得分:0)

在尝试将请求中的信息转换为RegisterModel时,默认模型绑定无法处理该对象。

选项:

如果您想要接受列表作为请求参数,Model Binding to a List MVC 4可能会有答案。

答案 1 :(得分:0)

好吧我输入了类型的错误,甚至不知道我是怎么做到这个错误的。所以我更新了适用于国家和类型的模型的模型现在有效:

[Required]
public int Countries { get; set; }

由于我的疲倦,这是一个错误;)