2012-01-23 56 views
2

我正在使用MvcContrib网格在页面上显示表格。我正在使用自定义列在表格上生成复选框,以便用户可以选择多行并提交表单。如何在没有数据注释的情况下创建所需的字段

我不希望表单提交,除非至少选择了一个复选框。我可以自己轻松地编写这个Javascript来强制进行验证,但我想知道如何使用MVC3提供的不显眼的库。

我想我只需要设置我的输入具有适当的类和属性,然后在页面上的脚本(验证和validate.unobtrusive)应该选择它们并将它们标记为需要验证,但我没有能够得到正确的组合。

这里是我目前生成输入:

<input type="checkbox" 
     name="foo" 
     value="@item.foo" 
     class="input-validation-error" 
     data-val-required="Please select an option." 
     data-val="true" /> 

回答

1

尝试设置项目上的数据-VAL属性,那么你必须要告诉jQuery的你有新的内容重新解析通过什么形式如:

 
$.validator.unobtrusive.parse($('#yourForm')); 

其中窗体当然是对您的窗体元素的引用。

也有这个伟大的发布和jQuery有一些内部适配器,您可以拨打: 从http://www.devtrends.co.uk/blog/the-complete-guide-to-validation-in-asp.net-mvc-3-part-2

 
jQuery.validator.unobtrusive.adapters.addSingleVal("notequalto", "otherproperty", "mynotequaltofunction") 
+0

只是要清楚,我没有添加新的内容到页面。该页面将在所有输入中提供data-val和data-val-required属性。我只是试图让客户端验证触发并显示一条错误消息。如果我将类设置为“必需”,它会触发,但我没有收到我想要显示的消息。 –

0
<div class="editor-field"> 
    <input class="text-box single-line" 
    data-val="true" data-val-number="The field Qty Available must be a number." 
    data-val-range="The field Qty Available must be between 0 and 120." 
    data-val-range-max="120" data-val-range-min="0" 
    data-val-required="The Qty Available field is required." 
    id="QtyOnHand" name="QtyOnHand" type="text" value="12" /> 
    <span class="field-validation-valid" data-valmsg-for="QtyOnHand" 
      data-valmsg-replace="true"></span> 
</div> 

领带,在数据模型中的注释和数据val-之间*在阅读上述代码后,属性应该清晰,但是客户端验证绑定的位置可能不那么明显。打开\ Scripts \ jquery.validate.unobtrusive.js文件并搜索“data-val”。马上你会看到JavaScript使用data-val-,input-和field- * CSS类在客户端上显示/隐藏验证消息。

以上摘自这个伟大的article,您可能需要详细阅读。

1

从我的经验来看,显示客户端验证的常见错误是在页面上放置一个Html.ValidationMessageFor(lambda)。

没有这一点,客户端验证将不会触发,以防止表单提交和/或显示使用客户端上的注释生成的消息。

希望这会有所帮助。

相关问题