2

你好,

我正在尝试将网站从 ASP.NET MVC1 更新到 ASP.NET MVC3 以及从 VS2008 到 VS2010。到目前为止,除了两个视觉工作室中的 FormCollection 类似乎完全不同之外,一切似乎都进行得很顺利。

我注意到在 VS2008 中,版本 1 和版本 2(大概是 MVC1 和 MVC2)有一个 FormCollection,我看不出它们有什么大的变化,但是在 VS2010 中,唯一的 FormCollection 类有一个密封类,它是让我很伤心,因为我之前有一个继承自 FormCollection 的类。

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

问候,哈利

4

1 回答 1

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;
        }
    }
}

为了澄清为什么使用它而不是模型活页夹,这仅用于测试以轻松快速轻松地模拟表单。

于 2011-03-02T13:35:54.160 回答