这曾经有用。
<AcceptVerbs(HttpVerbs.Post)> _
Function Widget(ByVal collection As FormCollection) As ActionResult
...
If ... Then
ModelState.AddModelError(...)
ModelState.SetModelValue("Gadget", collection.ToValueProvider("Gizmo"))
Return View()
End If
...
End Function
我升级到 ASP.NET MVC 2 Beta 和 ASP.NET MVC 2 Futures Assembly for Beta ,现在ToValueProvider()
因编译时错误而失败:
接口 'System.Web.Mvc.IValueProvider'不能 被索引,因为它没有默认值 属性
如果没有使用ModelState.SetModelValue()
,如何使用collection.ToValueProvider()
?
答案 0 :(得分:2)
摘自ASP.NET MVC 2 Beta发行说明:
ASP.NET MVC 2 Beta中的更改
推出了IValueProvider 界面,取代所有用法 IDictionary&lt; string, ValueProviderResult&GT;
每个属性或方法参数 接受的IDictionary&lt; string, ValueProviderResult&GT;现在接受了 IValueProvider。这种变化会影响 仅包含自定义的应用程序 价值提供者或定制模型 粘合剂。
属性和方法的示例 受此变化影响的人 包括以下内容:
- ControllerBase和ModelBindingContext的ValueProvider属性 类。
- Controller类的TryUpdateModel方法。
- Site.css文件中添加了用于样式化的新CSS类 验证信息。
HTHS,
查尔斯
答案 1 :(得分:0)
只需删除字符串参数。
错:
collection.ToValueProvider("Gizmo")
正确:
collection.ToValueProvider()
发布到Web服务器后创建新的运行时错误:
找不到方法: “System.Web.Mvc.IValueProvider System.Web.Mvc.FormCollection.ToValueProvider()”
将 .NET Framework 4 Beta 2 下载并安装到网络服务器上。
Microsoft Download Center: Microsoft .NET Framework 4 Beta 2
答案 2 :(得分:0)
我已完成以下操作并且正在运作。
ModelState.SetModelValue(“Gadget”,ValueProvider.GetValue(ControllerContext,“Gizmo”));
尚未尝试部署它。