我需要验证一个多步骤表单.这样做有什么好的插件吗?
例如:
$(function() {
$('#MoveStep1').click(function() {
$("#step1").validate();
});
});
Run Code Online (Sandbox Code Playgroud)
#step1 是一个字段集.
是否有任何高级别的理由同时为Web应用程序进行客户端和服务器端验证?
假设您有一个使用域模型模式,DDD和许多其他设计模式的应用程序.假设我们有许多解决方案,如下所示:
用户体验层将是Solution.UI.Web,我们假设它将是一个ASP.NET WebForms应用程序.你如何执行客户端验证?
有许多事情需要考虑:
首先,我们不应该点击应用程序/数据库服务器将任何验证错误返回给客户端,但我们也可以实现服务器端验证,但我们还需要客户端验证.
其次,我们不希望在用户体验层上实现验证规则.那是因为如果您的应用程序是WebApp,然后您决定创建一个WinApp客户端,那么您将不得不再次实施验证规则 - >维护噩梦.
一种简单的方法是使用ViewModel对象(将被发送到客户端的域实体的展平视图)实现验证逻辑,然后在命中应用程序/数据库服务器之前验证这些对象.
我见过的另一种方法是在不同的应用程序中多次使用,只是生成一组验证错误消息并将该集合发送给客户端.那没关系,但是有问题.只是一个简单的验证错误摘要消息将不会发生,特别是如果您有大数据输入表单.
现在,ASP.NET MVC框架使生活变得更加容易.您可以使用EF + DataAnnotations,而MVC Scaffolding框架可以为您完成大部分工作.但是如果你想创建一个MVC应用程序并使用jQuery和JavaScript实现验证逻辑就是这种情况.
但是,如果你需要一种更通用的方法来实现一个可以在不同的应用程序中使用和使用的验证框架,比如WinForms和WebForms呢?
只是为了澄清,我正在寻找的是一组设计模式/原则和/或技术/框架,以实现一个验证框架,该框架可以使用您的域模型实现,然后在您的客户端应用程序上实施.并且,我不想只返回关于破坏的规则或任何东西的字符串错误消息的集合,我希望能够在验证失败时更新我的数据绑定控件(TextBox,ComboBox,DateTimePicker等),以便用户体验层将更直观(如果您愿意).
我已经看到了一些实现和框架,我已经使用了ASP.NET MVC客户端验证一段时间了,所以我的答案与MVC或JavaScript验证没有任何关系.
.net domain-driven-design client-side-validation n-tier-architecture
我通过复制ASP.NET MVC 3 CompareAttribute创建了一个自定义CompareLessThan验证属性,而不是检查是否相等,我检查一个属性是否小于另一个属性.如果存在客户端错误,则向用户显示消息"{0}必须小于{1}".
我的模型设置如下,Display属性引用资源文件.
[CompareLessThan("AmountAvailable", ErrorMessageResourceName="CompareLessThan", ErrorMessageResourceType = typeof(Resources.ValidationMessages))]
[Display(Name = "Amount", ResourceType = typeof(Resources.Labels))]
public decimal Amount { get; set; }
[Display(Name = "AmountAvailable", ResourceType = typeof(Resources.Labels))]
public decimal AmountAvailable { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后自定义验证GetClientValidationRules方法与CompareAttribute完全相同
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationLessThanRule(FormatErrorMessage(metadata.DisplayName), FormatPropertyForClientValidation(OtherProperty), this.AllowEquality);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我们生成错误消息,如果出现问题,将显示给用户.我可以从资源文件中获取使用我的自定义CompareLessThan属性修饰的属性的显示名称,但我的问题是如何获取我们正在比较的"其他"属性的显示名称?在IsValid方法中,我们引用了validationContext,我可以从中为'other'属性生成PropertyInfo对象,我想获取显示名称.但是,在GetClientValidationRules中,我没有访问权限.
我总是可以为另一个属性的显示名称传递另一个值,但我希望有一种方法可以派生它,因为我已经用数据注释指定它.
有任何想法吗?
validation asp.net-mvc client-side-validation validationattribute
需要验证单选按钮输入,即当按下提交按钮并且没有选择单选按钮时,它会提醒用户说"请选择一个复选框",如果选择了单选按钮,则只需提交表单,需要没有警觉.
只能使用HTML CSS和JavaScript,我知道它在jquery中容易1000倍,但遗憾的是我无法使用它.
而且我知道我的HTML无效,但除非它直接影响我当前的问题,否则我稍后会处理它.
<form name="form1" action="#" onsubmit="return validateForm()" method="post">
First time visitor?:<br/>
<label for="s1">Yes</label>
<input type="radio" id="1" name="yesno" value="1"/>
<br/>
<label for="s2">No</label>
<input type="radio" id="1" name="yesno" value="2"/>
<br/>
<input type="submit" value="Submit"><br/>
</form>
Run Code Online (Sandbox Code Playgroud)
任何指针都非常感谢,谢谢.
我在RoR应用程序中使用SimpleForm,ClientSideValidations和ClientSideValidations-SimpleForm gems.我可以将表单精美地渲染到模态中,但是当输入失去焦点时,不会发生验证并提交表单.另请注意,我尝试使用此处的修复程序:http: //www.ddarrensmith.com/blog/2012/05/17/ruby-on-rails-client-side-validation-with-validation-helpers-and- Twitter的引导/
包含表单的视图的片段:
<div class='modal hide' id='New_Discrep' tabindex="-1" role='dialog' aria-labelledby="#New_Discrep_Label" aria-hidden='true'>
<div class="modal-header">
<button type='button' class='close' data-dismiss='modal' aria- hidden='true'>x</button>
<h3 id="New_Discrep_Label">Create Discrepancy</h3>
</div>
<%= simple_form_for @new_discrepancy, :validate => true, :url => {:controller=> 'discrepancy', :action => 'create', :device_id => @device.id} do |f| %>
<div class='modal-body'>
<%= f.input :system, :wrapper => :prepend, :label => false do %>
<%= content_tag :span, 'System', :class => 'add-on input-label' %>
<%= f.input_field :system %>
<% end %>
<%= f.input :description, :wrapper => …Run Code Online (Sandbox Code Playgroud) ruby-on-rails client-side-validation simple-form twitter-bootstrap
使用Visual Studio 2013.4(Visual Studio 2013 Update 4)我创建了一个具有个人用户帐户身份验证配置的常规ASP.NET MVC 5项目.所有用户注册和登录功能已经由Visual Studio支持我,并且工作正常.
如何在注册页面上实现以下规则的客户端验证:没有已注册的用户使用相同的电子邮件?
c# asp.net asp.net-mvc client-side-validation asp.net-identity
有没有人对rails 2.x或3.x上的backbone.js和ruby进行验证有什么建议或示例?
这是我的属性OldPassword的模型
[Required]
[StringLength(16, ErrorMessage = "The Old Password must be at least 8 characters long.", MinimumLength = 8)]
[RegularExpression("^(?=.*[a-z])(?=.*[A-Z]).+$", ErrorMessage = "Old Password is Not a valid Password")]
[Display(Name = "Old Password")]
public string OldPassword { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是渲染的输出
<input class="inputsmall defaultFocus input-validation-error" data-val="true"
data-val-length="The Old Password must be at least 8 characters long."
data-val-length-max="16" data-val-length-min="8"
data-val-regex="Old Password is Not a valid Password"
data-val-regex-pattern="^(?=.*[a-z])(?=.*[A-Z]).+$"
data-val-required="The Old Password field is required." id="OldPassword" maxlength="16" name="OldPassword" style="width: 295px;" type="password">
Run Code Online (Sandbox Code Playgroud)
验证当前的验证顺序是
我的应用程序中有一个活动表单.但是客户端验证不起作用.表格的代码如下所示:
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'application-data-student-form',
'enableAjaxValidation'=>false,
'enableClientValidation'=>true,
'clientOptions'=>array('onSubmit'=>true),
'htmlOptions'=>array(
'enctype'=>'multipart/form-data',
'role'=>'form',
'class'=>'form-horizontal'
),
)); ?>
Run Code Online (Sandbox Code Playgroud)
我在我的项目中使用过bootstrap 3.任何想法或解决方案都将受到任何人的高度赞赏...
validation ×6
asp.net-mvc ×2
javascript ×2
.net ×1
asp.net ×1
backbone.js ×1
c# ×1
jquery ×1
php ×1
server-side ×1
simple-form ×1
yii ×1