Обновление ASP.NET MVC до ASP.NET MVC3 FormCollection кажется совершенно другим - PullRequest
2 голосов
/ 02 марта 2011

Алло,

Я пытаюсь обновить веб-сайт с ASP.NET MVC1 до ASP.NET MVC3 и с VS2008 до VS2010. Пока все идет хорошо, за исключением того, что класс FormCollection в двух визуальных студиях выглядит совершенно по-разному.

Я заметил, что в VS2008 есть FormCollection для версии 1 и версии 2 (предположительно MVC1 и MVC2), и я не вижу никаких больших изменений с ними, но в VS2010 единственный класс FormCollection есть запечатанный класс, который вызывает у меня горе, так как у меня есть класс, который до этого наследовал от FormCollection.

Кто-нибудь знает, переместилась ли FormCollection, которую я знал и любил, или я должен просто переписать все, используя класс, который его наследует (много всего)?

С уважением, Harry

1 Ответ

1 голос
/ 02 марта 2011

Обошел это сейчас.Вместо наследования 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;
        }
    }
}

Для пояснения того, почему это используется, а не связующие модели, это былоиспользуется только для тестирования, чтобы легко и быстро макетировать формы.

...