调用UpdateModel的异常 - Value不能为null或为空

时间:2010-04-08 14:30:39

标签: asp.net-mvc-2 .net-4.0

这可能是我想念的傻事,但我肯定迷失了。我正在使用.NET 4 RC和VS 2010.这也是我第一次尝试在.NET 4中使用UpdateModel,但每次调用它时,我都会得到一个异常,即Value cannont为null或为空。我有一个名为LogOnModel的简单ViewModel:

[MetadataType(typeof(LogOnModelMD))]
public class LogOnModel
{
    public string Username { get; set; }
    public string Password { get; set; }

    public class LogOnModelMD
    {
        [StringLength(3), Required]
        public object Username { get; set; }
        [StringLength(3), Required]
        public object Password { get; set; }
    }
}

我的视图使用MVC2中新的强类型帮助程序生成用户名的文本框和密码的文本框。当我在我的控制器方法中查看FormCollection时,我看到两者的值都会通过。

最后但并非最不重要的是,这里是后控制器方法:

    // POST: /LogOn/
    [HttpPost]
    public ActionResult Index(FormCollection form)
    {
        var lm = new LogOnModel();

        UpdateModel(lm, form);

        var aservice = new AuthenticationService();

        if (!aservice.AuthenticateLocal(lm.Username, lm.Password))
        {
            ModelState.AddModelError("User", "The username or password submitted is invalid, please try again.");
            return View(lm);
        }

        return Redirect("~/Home");
    }

有人可以了解一下为什么UpdateModel会抛出此异常吗?谢谢!

1 个答案:

答案 0 :(得分:0)

MVC 2早期预览的已知问题。这是针对MVC 2 RTM修复的。您可以从http://www.asp.net/mvc/下载MVC 2 RTM。有关如何将此安装评估为VS2010 RC的信息,请访问http://haacked.com/archive/2010/02/10/installing-asp-net-mvc-2-rc-2-on-visual-studio.aspx