一个编辑页面的post controller函数如下
public ActionResult Edit(int id, FormCollection collection)
{
Asset a = db.Asset.Find(id);
TryUpdateModel(a, "",null, new string[] { "CompanyId" });
if (ModelState.IsValid)
{
。。。 这段代码对asset对象进行赋值,接下来如果成功则保存。我在开发机器上运行正常,但在部署服务器上,isValid总是false,调测发现,collection在部署服务器上 key里面有一个 “” 空字符串,这样在tryupdatemodel里面就报错了。
可是用fiddler察看post数据,里面都是标准的 xxx=yyy&....,不明白为什么会冒出这个空字符串的key来。
开发环境和部署环境的区别在于,开发是WIN7而部署的服务器是WIN2003
补充一下
post回去的数据确实有 &=xxx 这样的,所以 collection里面的key有空字符串。
在iis7上面,这个东西会被过滤掉,而在iis6则依然存在,所以tryupdatemodel就错了。
怎么办?
顺便说一下,这个&=2011-1-1&。。。是我用了easyui里面日期输入控件,唉,他自己生成的input,不知道怎么改。
collection.Remove("");
TryUpdateModel(a, "", null, new string[] { "CompanyId" }, collection);