Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET/MVC:Automatic;键入“时进行验证”;?_Asp.net Mvc_Annotations_Client Side Validation - Fatal编程技术网

Asp.net mvc ASP.NET/MVC:Automatic;键入“时进行验证”;?

Asp.net mvc ASP.NET/MVC:Automatic;键入“时进行验证”;?,asp.net-mvc,annotations,client-side-validation,Asp.net Mvc,Annotations,Client Side Validation,编辑:我现在可以在文本字段中使用它(参见问题下方的注释) 然而,由于某些原因,验证没有在我的下拉列表中生效 在我的ViewModel中,我有: [Display(Name = "Country")] [Required(ErrorMessage = "{0} is definitely required!")] public int CountryId { get; set; } @Html.LabelFor(m => m.CountryId, new { @class = "col-m

编辑:我现在可以在文本字段中使用它(参见问题下方的注释)

然而,由于某些原因,验证没有在我的下拉列表中生效

在我的ViewModel中,我有:

[Display(Name = "Country")]
[Required(ErrorMessage = "{0} is definitely required!")]
public int CountryId { get; set; }
@Html.LabelFor(m => m.CountryId, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
     @Html.DropDownListFor(m => m.CountryId, Model.CountryList, "—Select a country --", 
      new { @class = "form-control" })
     <div class="container_voor_error">
         @Html.ValidationMessageFor(m => m.CountryId, "", new { @class = "text-danger" })
     </div>
</div>
我认为:

[Display(Name = "Country")]
[Required(ErrorMessage = "{0} is definitely required!")]
public int CountryId { get; set; }
@Html.LabelFor(m => m.CountryId, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
     @Html.DropDownListFor(m => m.CountryId, Model.CountryList, "—Select a country --", 
      new { @class = "form-control" })
     <div class="container_voor_error">
         @Html.ValidationMessageFor(m => m.CountryId, "", new { @class = "text-danger" })
     </div>
</div>
所以我的问题是:我必须为每个要验证的表单元素显式调用validate()方法,这正常吗?或者,在ASP.NET/MVC中,是否有一种方法可以为视图窗体上的所有元素(或者可能是元素的子集)启用自动“键入时验证”


谢谢

否,ASP.NET MVC不提供自动“键入时验证”。要进行“键入时验证”,必须是javascript代码。ASP.NET Mvc默认使用jQuery验证插件,该插件对blur事件进行验证,这与keyup事件不同

ASP.NETMVC所做的就是向元素呈现一些html属性,也称为不引人注目的验证。如果看到启用了验证,然后禁用了验证的页面源,则可以检查此项。还有一个javscript库,它使用这些属性中的值连接到适当的事件


最后,您还可以为此使用不同的插件/库,还可以更改ASP.NET向客户端发送验证的方式。

否,ASP.NET MVC不提供自动“键入时验证”。要进行“键入时验证”,必须是javascript代码。ASP.NET Mvc默认使用jQuery验证插件,该插件对blur事件进行验证,这与keyup事件不同

ASP.NETMVC所做的就是向元素呈现一些html属性,也称为不引人注目的验证。如果看到启用了验证,然后禁用了验证的页面源,则可以检查此项。还有一个javscript库,它使用这些属性中的值连接到适当的事件


最后,您还可以为此使用不同的插件/库,还可以更改ASP.NET向客户端发送验证的方式。

如果您未禁用客户端验证,并且已包含相关脚本,则这是默认行为。您误解了客户端验证的工作原理—再次显示相同的表单视图是错误的—当您单击“提交”按钮并出现验证错误时,表单将不再提交或显示。而且您不需要
$('some-selector').validate().element('some-element')code@Stepen好的,谢谢,但我有点困惑。一方面,您声明所描述的行为(即“键入时不验证”)是默认行为,但随后您还声明我不需要jajvaScript/jQuery行。但我该如何实现“输入时验证”?(或者你的意思是“键入时验证”实际上是默认行为?)此外,我在这里使用默认设置:在搭建之后,我没有启用或禁用任何相关的内容,也没有添加或删除任何相关的脚本。续:另外,你声明,如果出现验证错误,表单“将不再提交或显示”... 对,您的意思是没有向服务器发布任何内容(即,没有发生“发布”或“获取”操作),对吗?是的,我知道,这只是显示在客户端(jS)上的错误消息的同一个页面。您需要在视图中包含
jquery.validate.jS
jquery.validate.unobtrusive
,所有这些都得到了正确处理,请注意客户端验证是懒惰的(意味着您可以在不触发验证的情况下对控件进行制表)。输入无效值并进行tab out后,将显示错误消息。当您重新进行tab in(从该点开始)时,将在每个keyup事件中验证您的值。如果您未禁用客户端验证,并且已包含相关脚本,则这是默认行为。以及您对客户端验证工作方式的误解ks-再次显示相同的表单视图是错误的-当您单击“提交”按钮并出现验证错误时,表单将不再提交或显示。并且您不需要
$('some-selector').validate().element('some-element'));
code@StepenMuecke好的,谢谢,但是我在这里有点困惑。一方面,您声明所描述的行为(即,没有“键入时验证”)是默认行为,但是您还声明我不需要jajvaScript/jQuery行。但是,那么我应该如何实现“键入时验证”?(或者您的意思是“键入时验证”实际上是默认行为?)此外,我在这里使用默认设置:搭建之后,我没有启用或禁用任何相关内容,也没有添加或删除任何相关脚本。续:此外,您声明,如果出现验证错误,表单“将不再提交或显示”“…是的,你的意思是没有任何内容发布到服务器(即没有“发布”或“获取”操作发生),对吗?是的,我理解,这只是显示在客户端(jS)上的错误消息的同一页而已。”。您需要在视图中包含
jquery.validate.js
jquery.validate.unobtrusive
,所有这些都得到了正确的处理,请注意客户端验证是惰性的(这意味着您可以在不触发验证的情况下通过控件进行制表)。输入无效值并进行tab out后,将显示错误消息。当您从该点开始重新进行tab in时,您的值将在每个keyup事件
jquery中进行验证。validate
会在
上进行验证。keyup
!(请参阅,特别是标题为“在使用演示
jquery时要注意的几件事”的部分。验证
确实在
上进行验证。键控
!(请参阅,特别是标题为