喂,
我正在尝试将网站从ASP.NET MVC1更新到ASP.NET MVC3,从VS2008更新到VS2010。到目前为止,一切似乎都没问题,除了两个视觉工作室的FormCollection类似乎完全不同。
我注意到在VS2008中有一个版本1和版本2的FormCollection(可能是MVC1和MVC2),我看不出它们有任何重大变化,但在VS2010中,唯一的FormCollection类是密封的导致我悲痛的类,因为我之前有一个继承自FormCollection的类。
任何人都知道我以前认识和喜爱的FormCollection是否已经移动,或者我是否应该使用继承它的类重写所有内容(很多东西)?
此致 哈利
答案 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;
}
}
}
为了澄清为什么使用它而不是模型粘合剂,这只是用于测试,以便快速轻松地模拟表单。