扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
这篇博客文章探讨了Xamarin.Forms企业应用程序的验证。当然,有许多方法可以用于验证。这里介绍的是eShopOnContainers手机应用程序中的验证方法,这是可扩展的,易于单元测试,并且支持数据绑定和属性更改通知。
创新互联公司自2013年起,是专业互联网技术服务公司,拥有项目网站设计、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元井陉做网站,已为上家服务,为井陉各地企业和个人服务,联系电话:18980820575任何接受用户输入的应用程序都应确保输入有效。 例如,应用程序可以检查仅包含特定范围内的字符的输入,具有一定长度,或匹配特定格式。 没有验证,用户可以提供导致应用失败的数据。 验证强制执行业务规则,并防止***者注入恶意数据。
在Model-ViewModel-Model(MVVM)模式的上下文中,通常需要视图模型或模型来执行数据验证,并向视图发出任何验证错误,以便用户可以对其进行更正。 eShopOnContainers移动应用程序执行视图模型属性的同步客户端验证,并通过突出显示包含无效数据的控件,并通过显示通知用户为什么数据无效的错误消息来通知用户任何验证错误。 下图显示了在eShopOnContainers移动应用程序中执行验证所涉及的类:
需要验证的视图模型属性的类型为ValidatableObject
属性更改通知由ExtendedBindableObject类提供,因此Entry控件可以绑定到视图模型类中的ValidatableObject
验证规则通过创建从IValidationRule
public interface IValidationRule{ string ValidationMessage { get; set; } bool Check(T value); }
此接口指定验证规则类必须提供用于执行所需验证的布尔检查方法,以及ValidationMessage属性,其值为验证失败时将显示的验证错误消息。
以下代码示例显示了IsNotNullOrEmptyRule
public class IsNotNullOrEmptyRule: IValidationRule { public string ValidationMessage { get; set; } public bool Check(T value) { if (value == null) { return false; } var str = value as string; return !string.IsNullOrWhiteSpace(str); } }
Check方法返回一个布尔值,指示value参数是空值,空值还是仅由空格字符组成。
在eShopOnContainers手机应用程序中,需要验证的视图模型属性被声明为ValidatableObject
public ValidatableObjectUserName { get { return _userName; } set { _userName = value; RaisePropertyChanged(() => UserName); } }
为了进行验证,验证规则必须添加到ValidatableObject
private void AddValidations() { _userName.Validations.Add(new IsNotNullOrEmptyRule{ ValidationMessage = "A username is required." }); }
此方法将IsNotNullOrEmptyRule
视图模型属性可以手动触发验证。 例如,当使用模拟服务时,当用户点击LoginView上的Login按钮时,会发生在eShopOnContainers移动应用程序中。 命令委托在LoginViewModel中调用MockSignInAsync方法,该方法通过执行Validate方法来调用验证,该方法又调用ValidateUserName方法:
private bool ValidateUserName() { return _userName.Validate(); }
ValidateUserName方法通过调用ValidatableObject
public bool Validate() { Errors.Clear(); IEnumerableerrors = _validations .Where(v => !v.Check(Value)) .Select(v => v.ValidationMessage); Errors = errors.ToList(); IsValid = !Errors.Any(); return this.IsValid; }
此方法将清除Errors集合,然后检索添加到对象的Validations集合的任何验证规则。 执行每个检索的验证规则的检查方法,并且无法验证数据的任何验证规则的ValidationMessage属性值都将添加到ValidatableObject
绑定属性更改时也会自动触发验证。 了解更多信息,请查看属性变化是的触发验证。
eShopOnContainers手机应用程序通过突出显示包含无效数据的控件以红色线条通知用户任何验证错误,并显示一条错误消息,通知用户为什么数据在包含无效数据的控件下无效。 以下屏幕截图显示eShopOnContainers手机应用程序中的一些LoginView,当出现验证错误时:
LineColorBehavior附加行为用于突出显示已发生验证错误的Entry控件。 以下代码示例显示如何将LineColorBehavior附加行为附加到Entry控件:
...
Entry控件使用显式样式,如下面的代码示例所示:
此样式将EntryColorBehavior附加行为的ApplyLineColor和LineColor附加属性设置为Entry控件。 当ApplyLineColor附加属性的值被设置或更改时,LineColorBehavior附加行为执行OnApplyLineColorChanged方法,该方法将EntryLineColorEffect类添加或删除到Entry的Effects集合。 有关EntryLineColorEffect类的更多信息,请查看突出显示包含无效数据的控件。
Entry控件还将DataTrigger添加到其Triggers集合中。 以下代码示例显示DataTrigger:
...
该DataTrigger监视UserName.IsValid属性,如果值为false,它将执行Setter,它将LineColorBehavior附加行为的LineColor附加属性更改为红色。
UI会在数据失败验证的每个控件下面的Label控件中显示验证错误消息。 以下代码示例显示如果用户未输入有效的用户名,则该标签显示验证错误消息:
每个标签绑定到正在验证的视图模型对象的Errors属性。 错误属性由ValidatableObject
使用Xamarin.Forms的企业应用程序模式专注于开发Xamarin.Forms更容易测试,维护和发展的企业应用程序的核心模式和架构指导。 电子书还附带了示例应用程序,eShopOnContainers手机应用程序 ,其执行视图模型属性的同步客户端验证,并通过突出显示包含无效数据的控件,并通过显示通知用户为什么数据无效的错误消息来通知用户任何验证错误。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流