将ASP.NET MVC升级到ASP.NET MVC3 FormCollection似乎完全不同

时间:2011-03-02 10:20:39

标签: asp.net-mvc visual-studio-2008 visual-studio-2010 asp.net-mvc-3 formcollection

喂,

我正在尝试将网站从ASP.NET MVC1更新到ASP.NET MVC3,从VS2008更新到VS2010。到目前为止,一切似乎都没问题,除了两个视觉工作室的FormCollection类似乎完全不同。

我注意到在VS2008中有一个版本1和版本2的FormCollection(可能是MVC1和MVC2),我看不出它们有任何重大变化,但在VS2010中,唯一的FormCollection类是密封的导致我悲痛的类,因为我之前有一个继承自FormCollection的类。

任何人都知道我以前认识和喜爱的FormCollection是否已经移动,或者我是否应该使用继承它的类重写所有内容(很多东西)?

此致 哈利

1 个答案:

答案 0 :(得分:1)

现在已经解决了这个问题。现在它没有继承FormCollection,而是拥有它自己的字段“form”而不是FormCollection,它的命令只是对此进行操作。

编辑:

人们要求代码,所以这是旧班级:

using System;
using System.Linq.Expressions;
using System.Web.Mvc;
using OpenProjects.Core;

namespace ProjectSupport.Web.Test
{
    public class FormFor<TEntity> : FormCollection where TEntity : class
    {
        public FormFor<TEntity> Set<TReturn>(Expression<Func<TEntity, TReturn>> property, string value)
        {
            this[property.PropertyName()] = value;

            return this;
        }
    }
}

以下是现在的情况:

using System;
using System.Linq.Expressions;
using System.Web.Mvc;
using OpenProjects.Core;

namespace ProjectSupport.Web.Test
{
    public class FormFor<TEntity> where TEntity : class
    {
        private FormCollection form;


        public FormFor()
        {
            form = new FormCollection();
        }

        public FormFor<TEntity> Set<TResult>(Expression<Func<TEntity, TResult>> property, string value)
        {
            form.Add(property.PropertyName(), value);

            return this;
        }

        public FormCollection ToForm()
        {
            return form;
        }
    }
}

为了澄清为什么使用它而不是模型粘合剂,这只是用于测试,以便快速轻松地模拟表单。