首页
学习
活动
专区
圈层
工具
发布

WPF 双向绑定到非公开 set 方法属性在 NET 45 和 NET Core 行为的不同

本文记录 WPF 在 .NET Framework 4.5 和 .NET Core 3.0 或更高版本对使用 Binding 下的 TwoWay 双向绑定模式绑定到非公开的 set 属性上的行为变更 在....NET Framework 4.5 下,可以使用 Binding 下的 TwoWay 双向绑定模式,绑定到非公开的 set 属性,如 private set 私有设置的属性上,实现双向更改,效果上和公开的...set 方法一样,可以成功写入 但是在 .NET Core 3.0 开始,此绑定将会提示 XamlParseException 而抛出异常 如以下的 ViewModel 代码,包含了一个 Name 属性...经过我的考古,在 .NET Framework 4.6 下的行为就和 .NET Core 3.0 版本相同,是会抛出异常 敲黑板,使用双向绑定到非公开 set 方法的属性上的行为变更,不是 .NET Framework.../wpf 我认为,如果 ViewModel 设置了属性的 set 为私有,那也就是从设计上不要让其他逻辑进行设置,自然在 XAML 里对非公开设置的属性进行写入也是非预期的,抛出异常符合设计 本文所有代码放在

1.6K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    2.3.4 Web API -- MVC终结点 MVC与MVVM 模型绑定 自定义模型绑定器 模型验证 返回数据处理 MVC与MVVM MVC ASP.NET Core MVC 概述:https://docs.microsoft.com...模型绑定 什么是模型绑定 来源有哪些 复杂的数据绑定 ASP.NET Core 中的模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models...Razor在方法参数和公共属性中向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。 来源有哪些 [FromQuery] -从查询字符串获取值。...[Range]:验证属性值是否在指定的范围内。 [RegularExpression]:验证属性值是否与指定的正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性值是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过在服务器上调用操作方法来验证客户端上的输入。

    3K10

    .NET 云原生架构师训练营(模块二 基础巩固 MVC终结点)--学习笔记

    2.3.4 Web API -- MVC终结点 MVC与MVVM 模型绑定 自定义模型绑定器 模型验证 返回数据处理 MVC与MVVM MVC ASP.NET Core MVC 概述:https://docs.microsoft.com...什么是模型绑定 来源有哪些 复杂的数据绑定 ASP.NET Core 中的模型绑定:https://docs.microsoft.com/zh-cn/aspnet/core/mvc/models/model-binding...Razor在方法参数和公共属性中向控制器和页面提供数据。 将字符串数据转换为 .NET 类型。 更新复杂类型的属性。 来源有哪些 [FromQuery] -从查询字符串获取值。...[Range]:验证属性值是否在指定的范围内。 [RegularExpression]:验证属性值是否与指定的正则表达式匹配。 [Required]:验证字段是否不为 null。...[StringLength]:验证字符串属性值是否不超过指定长度限制。 [Url]:验证属性是否具有 URL 格式。 [Remote]:通过在服务器上调用操作方法来验证客户端上的输入。

    3.1K11

    使用ASP.NET Core 3.x 构建 RESTful API - 4.2 过滤和搜索

    向Web API传递参数 数据可以通过多种方式来传给API。 Binding Source Attributes 会告诉 Model 的绑定引擎从哪里找到绑定源。...默认情况下ASP.NET Core 会使用 Complex Object Model Binder,它会把数据从Value Providers那里提取出来,而Value Providers的顺序是定义好的...但是我们构建API时通常会使用 [ApiController] 这个属性,为了更好的适应API它改变了上面的规则。...[FromForm] 通常用来推断IFormFile和IFormFileCollection类型的Action参数。...按照这些规则,在Action的参数前面使用这些属性,就可以避免让我们手动去寻找绑定源。当默认的行为规则需要被重写的时候,也可以使用这些 Binding Source Attributes。

    1K20

    asp dotnet core 支持客户端上传文件

    HttpPost 里面的参数就是访问链接,如上面的代码,加入所在的类是这样定义 [Route("api/[controller]")] [ApiController] public...class GairKetemRairsemsController : ControllerBase 那么可以通过 api/GairKetemRairsems/UploadPackage 访问这个函数...在函数传入的参数使用 [FromForm]KanajeaLolowge file 的意思是通过 Post 提交 Form 的方法拿到参数 所以在客户端通过 Form 提交包含 File 和 Sha 信息的...,加上的 File 参数是和 asp dotnet core 的上传类对应的属性名,最后的一个 fileName 指的是文件名,因为传入的是 Stream 可能是内存流,这时就无法拿到文件名,需要用户传入...Core文件上传与下载(多种上传方式) - GuZhenYin - 博客园 File uploads in ASP.NET Core

    5.5K20

    杂(一)

    简单类型直接作为 key,复杂类型属性作为 key 对于 Get 请求,不论是简单类型还是复杂类型,调用 API 时,都会在 Query 中提交数据。...简单类型直接拼接,复杂类型属性拼接 对于 .Net Core MVC: 对于 Post 请求,不论基本类型还是复杂类型参数,调用 API 时,既可以在 Query 中提交参数,也可以使用 x-www-form-urlencoded...我们也不该在 Get 请求使用复杂类型放在 Body 中提交 对于 .Net Framework API: 对于 Post 请求: 如果是简单类型参数,调用 API 时,默认是在 Query 中提交参数的...如果有[FromForm] attribute 修饰参数,则需要以 x-www-form-urlencoded 形式提交参数 如果是复杂类型,调用 API 时,默认应该以 application/json...src => src.属性操作 )).ReverseMap(); } } 在控制器类依赖注入 IMapper 对象 在适当位置调用 var

    90220

    asp dotnet core 支持客户端上传文件

    get; set; } public string Sha { get; set; } } 这个类包含两个信息,一个是 File 文件,另一个是文件校验,这个类可以随意命名,属性也可以随意命名...HttpPost 里面的参数就是访问链接,如上面的代码,加入所在的类是这样定义 [Route("api/[controller]")] [ApiController] public...class GairKetemRairsemsController : ControllerBase 那么可以通过 api/GairKetemRairsems/UploadPackage 访问这个函数...在函数传入的参数使用 [FromForm]KanajeaLolowge file 的意思是通过 Post 提交 Form 的方法拿到参数 所以在客户端通过 Form 提交包含 File 和 Sha 信息的...,加上的 File 参数是和 asp dotnet core 的上传类对应的属性名,最后的一个 fileName 指的是文件名,因为传入的是 Stream 可能是内存流,这时就无法拿到文件名,需要用户传入

    6.8K20

    dotnet 用 ASP.NET Core 制作一个可以上传库文件的 NuGet 服务器

    我在写一个有趣的 WPF 应用,我想要测试这个 WPF 应用的一个功能,这个功能就是一键点击自动推送 NuGet 包到服务器。...用 ASP.NET Core 写一个假装的 NuGet 服务器,支持被 NuGet 推送包是特别简单的,本文就来和大家说说这个后台如何写 其实有现成的整个 NuGet 服务器,包含了包的列举和上传等功能...在使用 ASP.NET Core 时只能说工作量特别小 下面让我用 3 分钟告诉大家如何在 asp dotnet core 里面写一个支持被推送 nuget 包的服务器 首先是创建一个空白的工程,此时这个功能请去掉...([FromForm]FilePackage package) { } 注意加上 FromForm 特性,如果没有加上特性那么将会返回客户端 415 Unsupported...{ set; get; } } 此时从参数里面拿到的 package 属性就是客户端上传的对应的 NuGet 库 修改一下控制器的路径,这样才好假装这是一个 NuGet 服务器 [ApiController

    86910

    《ASP.ENT Core 与 RESTful API 开发实战》(第3章)-- 读书笔记(中)

    第 3 章 ASP.NET Core 核心特性 3.3 依赖注入 通常情况下,应用程序由多个组件构成,而组件与组件之间往往存在依赖关系 当我们需要获取数据时,通常的做法是实例化依赖的类,然后调用类里面的方法...4类: StatusCode ObjectResult 重定向结果 内容结果 模型绑定:将 HTTP 请求中的数据映射到 Action 中参数的过程 ASP.NET Core MVC 模型绑定特性: [...FromHeader] [FromQuery] [FromServices] [FromRoute] [FromForm] [FromBody] 还有两个特性用于指明参数是否必须使用绑定: BindRequiredAttribute...BindNeverAttribute 模型验证:指数据被使用之前的验证过程,它发生在模型绑定之后 数据注解通常用于验证,只要为类的属性添加需要的数据注解验证特性即可: [Required] [MinLength...实现 IValidatableObject 接口 过滤器:与中间件很相似,在 ASP.NET Core MVC 中,它们能够在某些功能的前后执行,由此形成一个管道 ASP.NET Core MVC 提供了以下

    1.4K10

    【愚公系列】2023年09月 .NETC#知识点-自定义绑定模型(文件上传)

    前言 在ASP.NET MVC中,数据模型绑定是将HTTP请求数据(如表单数据)转换为CLR对象的过程。自定义绑定模型可以让我们通过自定义规则来控制数据模型绑定。...以下是一些自定义绑定模型的示例: 自定义模型绑定器:我们可以实现自己的模型绑定器,继承IModelBinder接口,并覆盖BindModel方法来实现自定义的绑定逻辑。...使用属性转换器:我们可以使用属性转换器来自定义值的转换行为。这可以通过为要绑定的属性添加TypeConverterAttribute来实现。...一、自定义绑定模型(文件上传) 1.内置模型绑定 在 ASP.NET Core MVC 中,以下是常见的参数绑定属性: FromBodyAttribute:将请求的 body 反序列化为指定类型的对象。...例如: [HttpGet("{id}")] public IActionResult Get([FromRoute]int id) { // code } 这些参数绑定属性提供了灵活、简明的控制器方法参数绑定方式

    10900

    【ASP.NET Core 基础知识】--MVC框架--Views和Razor语法

    特性和注解 通过在模型属性上使用特性和注解,可以对模型的绑定行为进行更精确的控制。例如,可以使用 Required 特性指定某个属性为必填项。...以下是一些常见的技巧: 模型绑定前缀 在处理复杂的数据结构(例如嵌套的对象或集合)时,可以使用模型绑定前缀来指定数据应该绑定到模型的哪个属性。这在处理表单数组或嵌套对象时非常有用。...对象 } [FromForm], [FromQuery], [FromRoute] 使用 [FromForm], [FromQuery], [FromRoute] 特性明确指定模型绑定的数据来源。...使用模型绑定可以将表单字段直接绑定到模型的属性上。...最佳实践包括RESTful API设计、异常处理、安全性和性能优化,确保了应用程序的健壮性和安全性。这些综合策略帮助构建高效、安全、可扩展的ASP.NET Core应用。

    3.3K20

    Binding(五):多路绑定

    Binding不止能绑定一个源,它还能绑定多个源,这就是我们这节要讲的多路绑定:MultiBinding。...使用多路绑定跟一般的绑定还是有区别的,首先它并不能很好的在标记扩展中使用,另外,使用多路绑定必须为其指定多路转换器,不指定的话系统不知道怎么处理从这几个源过来的数据,下面通过一个例子来讲解一下:...,就得写成属性元素的形式,指定多路绑定的Converter,并且将更新设置为属性改变时,这样才能及时更新到button身上。...将这两个的Text绑定到Button的IsEnabled属性上,就能实现上述情景,效果如图: 只有当两个文本框都有值的时候登录按钮才能使用,至于为什么密码框不使用PasswordBox控件...,那是因为PasswordBox控件的Password属性不是依赖属性,Binding只能绑定依赖属性,在它身上不起作用,关于依赖属性,我们下节开讲,Binding相关到此结束...

    1.3K20

    使用ASP.NET Core 3.x 构建 RESTful API - 3.1 资源命名

    而“用户”这个资源可以用英文user或者users来表示(是否使用复数一直存在争议,两种方法都行,但你在使用的时候需要保持一致)。所以正确的uri应该是 GET api/user。...所以API的URI在设计的时候需要体现这种包含关系。 常见的错误做法:如果你想获得公司这个资源,我想你现在应该不会出错,uri应该是 api/companies。...在Controller上面添加了[ApiController]属性之后,就会启用以下行为: 要求使用属性路由(Attribute Routing)。...它将会推断出Action方法的参数到底来自哪个绑定源,例如[FromBody]、[FromForm]等等。这部分的详细介绍请点击:官方文档。 Multipart/form-data 请求推断。...使用 [FromForm] 属性批注操作参数时,[ApiController] 属性将应用推断规则,它会推断 multipart/form-data 为请求的内容类型。

    1.1K10

    ASP.NET Core 警惕可空类型开启之后模型校验失败

    在开启 Nullable 可空类型之后,原本可以调用的 API 也许就会提示 400 BadRequest 因为传入参数不合法,模型校验失败,此时将不会进入预期的 API 函数,同时也不会在输出里面找到有用的信息...,原本工作的很好的 API 也许在客户端调用的时候,将会提示 400 BadRequest 内容大概如下 { "type":"https://tools.ietf.org/html/rfc7231...API 错误了,本来是预期调用 Foo 的,但却调用了 A 接口 也许调用的端口不对,也许是被 Fiddler 干扰了 也许是传入的参数不合法 如上面提示,实际内容是 The Account field...is required 翻译过来就是接口里面的参数,要求一定存在 Account 属性 而明明之前工作的好好的,接口实现如下 [HttpPost] // ReSharper...而开启可空之后,定义的数据模型 public string Account { get; set; } 表示 Account 一定不是空,于是传入空的 Account 属性将会校验不通过 有两个解决方法

    1.7K30
    领券