- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经使用 OData 客户端生成器创建了一个 OData v4 客户端。这生成了部分类。我想用 IDataErrorInfo 扩展这个生成的类。
namespace Client.Model {
public partial class City : IDataErrorInfo
{
public String this[String columnName]
{
return "";
}
public String Error { get { return ""; } }
}
}
当我想创建一个新城市并将其发送到服务器时
ODataContainer container = new ODataContainer(new Uri("http://localhost:45666/odata"));
container.AddToCities(city);
我得到一个错误
An exception of type 'Microsoft.OData.Client.DataServiceRequestException' occurred in Microsoft.OData.Client.dll.
The request is invalid. The property "Error" does not exist in Server.Model.City.
WebApi 配置:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<City>("Cities");
builder.EntitySet<Country>("Countries");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
}
}
是否有可能阻止 Error 属性被包含在请求中?
最佳答案
OData 客户端生成的模型是分部类。当您实现 IDataErrorInfo
时,它会要求您实现 Error
属性,当然服务器端不存在该属性。因为你做了一个操作,例如在实体 City
上,这会序列化 City 对象,如果有 Error 属性,它也会被序列化。
一个解决方案可能是,避免这种情况并将客户端模型与 UI 分开。你可以试试这个:
namespace Client.Model {
public partial class City
{
public String this[String columnName]
{
return "";
}
}
}
使用继承来创建 UI 相关的模型类,与生成的模型类分开:
namespace UI.Model {
public class City : Client.Model.City, IDataErrorInfo
{
public String Error { get { return ""; } }
}
}
确保您在 UI 上使用 UI.Model.City,并且当您为添加操作调用 OData 服务时,对 UI.Model.City 类对象执行显式转换以转换为 Client.Model.City 和 Error 属性将消失:
ODataContainer container = new ODataContainer(new Uri("http://localhost:45666/odata"));
container.AddToCities((Client.Model.City)city);
注意:这种方法有其自身的缺点,因为它可能会导致您在不同的命名空间下使用相同的类名,因此在使用相同的类名时您通常必须使用完整的命名空间路径。您可以避免在 UI 模型上使用带有类名的不同前缀/后缀。例如CityViewModel
。
关于c# - .Net OData v4 客户端生成 - IDataErrorInfo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31483455/
我正在使用 MVVM 在 WPF 项目中工作. 使用 IDataErrorInfo 验证错误的最佳做法是什么? ?在我的模型或 View 模型中? 用于实现验证的最佳模式是什么? 附注我正在使用 .N
我正在创建一个将使用 IDataErrorInfo 的 WPF 应用程序我的业务对象实现的数据验证。我一直在使用 this demo from a blog post了解ValidatesOnData
注意-我的类(class)是EntityObject上课! 我有以下类(class): public class Foo { public Bar Bar { get; set; } } pu
在 MVVM IDataErrorInfo用于验证。在这个时间索引器检查值不能得到。在调用它后如何检查我无法获取的值。代码在这里。列名中传递的值是什么。 public string this[stri
我有一个简单定义如下的地址对象: public class Address { public string StreetNumber { get; set; } public stri
自从我尝试学习 WPF 以来,我越来越多地看到使用接口(interface) IDataErrorInfo 将错误绑定(bind)到接口(interface)。我的问题是我通常将数据验证放在属性的 s
我不知道是我找不到它还是它不存在,但是是否有任何验证属性可以检查集合是否为空/空? 如果没有,是否有关于如何创建我自己的验证属性的好资源? 最佳答案 您好,当您按照默认使用 DataAnnotatio
昨天,我问了一个关于 MVVM 验证的问题,有人用一段代码回答:https://stackoverflow.com/a/13387724/ 我试图理解这段代码,但我就是不理解索引器部分。有人可以向我解
我有一个绑定(bind)到 winform 的对象,这个对象实现了 IDataErrorInfo。我有一个错误提供者。问题是当一个属性的一个属性发生变化时。 当我更改年龄时没有问题(即检查并正确显示/
好吧,现在我正在验证数据。我有这段代码: 在我看来:
我在使用 IDataErrorInfo 验证 ComboBox 时遇到问题。 我设置了 1 个文本框和 1 个组合框,在运行程序时,第一个焦点在文本框上,当我点击 Tab 以聚焦在组合框中时,我得到:
这个问题可能很简单,但是我找不到办法做,所以我问了。 我在我的模型中使用 IDataErrorInfo 来验证它如下: public class Group : INotifyPropertyChan
我正在为 WPF 应用程序编写(尝试编写)单元测试。 UI 绑定(bind)以实现 IDataErrorInfo 的业务对象,这样当我在 View xaml 中设置 ValidatesOnDataEr
DataAnnotations 与 IDataErrorInfo 两者的优点和缺点? 一个比另一个的好处? (尤其是与 MVC 相关的) 最佳答案 因为我不想开始一个新问题,所以迟到了讨论。我的出发点
目前我的业务对象实现IDataErrorInfo .由于我打算在 ASP.NET MVC 3 中使用这些库,我认为我应该实现 IValidatableObject也可以代替。 WPF 是否与 IVal
我在某些面板上有两个控件:文本框和组合框: 当我在组合框上选择某些内容时,我需要强制对文本框进行 idataerrorinfo 验证。怎么做? View 模型中的代码: string IDataE
我们在我的 MVVM 应用程序中有一个配置设置页面。此处的字段之一(属性:BackupFolderPath)有一个 TextBox 控件。我们已经使用 IDataErrorInfo 对该控件进行了验证
我是 WPF MVVM 的新手,想对本文提出一个后续问题: Enable Disable save button during Validation using IDataErrorInfo 如果表单
我有 ItemType ,它在 IDataErrorInfo 接口(interface)的帮助下实现了验证所需的一切: #region IDataErrorInfo implementation
我有一个实现 IDataError 的 View 模型。在 View 模型中,我有一个 ObservableCollection。 ObservableCollection 在我的 View 中填充了
我是一名优秀的程序员,十分优秀!