让用户正确输入的最佳方式

我使用MVVM创建一个对话框,它提示用户输入一个http://到KML文件的URL。 当URL格式正确时,需要启用“确定”按钮,并且URL格式不正确时需要禁用该按钮。

现在,该按钮绑定到一个ICommand,并且CanExecute()的逻辑如下所示:

return !string.IsNullOrEmpty(CustomUrl);

每个击键都会引发该命令的CanExecuteChanged事件,并且到目前为止它运行良好。

现在我想做一些实际验证。 我知道要做到这一点的唯一方法如下:

try
{
    var uri = new Uri(CustomUrl);
}
catch (UriFormatException)
{
    return false;
}

return true;

这不是bueno,特别是因为验证发生在每个按键上。 我可以这样做,以便在用户点击OK按钮时验证URI,但我宁愿不要。 有没有更好的方法来验证除捕获异常之外的URI?


是的 - 你可以使用静态方法Uri.IsWellFormedUriString

return Uri.IsWellFormedUriString (CustomUrl, UriKind.Absolute);

我认为可能的解决方案有两个:

  • 创建一个检查URL正确性的正则表达式;
  • 使用Uri.TryCreate方法以避免异常(如果您不需要创建Uri对象,则可以使用Uri.IsWellFormedUriString方法);
  • 我宁愿使用第二个选项,创建正确的RegEx可能会很困难,并可能导致很多问题。


    您可以将验证规则添加到控件,验证将“通过魔术”完成。

    链接地址: http://www.djcxy.com/p/70229.html

    上一篇: Best way to get a user to input a correctly

    下一篇: PUT Object to AWS S3 via HTTP through VPC Endpoint with proper ACL?