gpt4 book ai didi

asp.net-mvc - "This property setter is obsolete, because its value is derived from ModelMetadata.Model now."

转载 作者:行者123 更新时间:2023-12-02 20:31:18 27 4
gpt4 key购买 nike

http://www.asp.net/learn/mvc/tutorial-39-cs.aspx

我们正在使用上述指南在 ASP.NET MVC 应用程序中实现一些验证。

我们收到以下错误这个属性 setter 已过时,因为它的值现在是从 ModelMetadata.Model 派生的。它没有行号,当按下提交按钮创建时它会爆炸一条新消息。

我们必须使用元数据示例(请参阅上面指南的底部),因为对象是在 DBML 中生成的

关于导致错误的原因有什么建议吗?

最佳答案

当您创建新的 ModelBindingContext 然后尝试设置 ModelType 属性时,在 MVC 2 预览版 2 或更高版本中,您将收到此错误。例如,在自定义模型绑定(bind)程序的单元测试中在旧版本的 MVC 中,我的代码如下:

    internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class
{
var mbc = new ModelBindingContext()
{
ModelName = prefix,
ModelState = modelState,
ModelType = typeof(T),
ValueProvider = collection.ToValueProvider()
};
IModelBinder binder = new MyModelBinder();
var cc = new ControllerContext();
return binder.BindModel(cc, mbc) as T;
}

当我更新到 MVC 2 预览版 2 时,我遇到了与您描述的相同的错误。解决方法是将此代码更改为:

    internal static T Bind<T>(string prefix, FormCollection collection, ModelStateDictionary modelState) where T:class
{
var mbc = new ModelBindingContext()
{
ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(null, typeof(T)),
ModelName = prefix,
ModelState = modelState,
ValueProvider = collection.ToValueProvider()
};
IModelBinder binder = new MyModelBinder();
var cc = new ControllerContext();
return binder.BindModel(cc, mbc) as T;
}

请注意,我已删除 ModelType 的分配,并将其替换为 ModelMetadata 的分配。 Visual Studio 应该告诉您哪一行代码实际上引发了此错误。

关于asp.net-mvc - "This property setter is obsolete, because its value is derived from ModelMetadata.Model now.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531776/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com