本帖最后由 sknice 于 2015-01-01 20:02:07 编辑

解决方案 »

  1.   

    楼主的钻研精神挺令人佩服,我从没有注意过这个问题,看了这个帖子,特意搜了一下,发现这篇博客说到这个问题:
    http://weblog.west-wind.com/posts/2012/Apr/20/ASPNET-MVC-Postbacks-and-HtmlHelper-Controls-ignoring-Model-Changes
    答案是HtmlHelper的TextBox方法会从ModelState中获取相应的值,而ModelState是用于对Model进行验证的,用FormCollection做参数的话,ModelState就是空的,也就是asp.net mvc无法验证Model,所以也就无法在回发后还原用户输入的内容。至于用input Html标签,那和asp.net mvc的ModelState就不相干了,也就不可能从ModelState中还原回发前的内容。你也可以发扬一下你的刨根问底精神,直接研究源代码:
    http://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/InputExtensions.cs
      

  2.   

    public ActionResult HelloModelTest( FormCollection fc)
            {
        var model = new 你的模型类();
        UpdateModel(model);
        return View(model);
            }