如何在代码中的 mvc 中进行一些自定义的非侵入式验证?

How do I do some custom unobtrusive validation in mvc in code?

提问人:NibblyPig 提问时间:12/4/2015 更新时间:12/4/2015 访问量:211

问:

试图让我的头脑绕过不显眼的验证。我创建了一个简单的页面,如下所示:

@using (Html.BeginForm())
{
<text>Validation for name should fail unless this box contains the word christmas</text>
    @Html.TextBoxFor(c => c.IsChristmas, new { id = "IsChristmas" })        <br />
    @Html.TextBoxFor(c => c.Name)

    @Html.ValidationMessageFor(c => c.Name)
    <br />

    <input type="submit" value="Submit" />
}

该模型只有两个字符串和 .[Required] NameIsChristmas

这很好用,如果在文本框为空时按提交,则会出现验证错误。Name is required

我现在想做的是,如果第一个文本框不包含“圣诞节”一词,则在他们尝试提交时出现验证错误。这只是为了学习如何创建自己的自定义验证类型。我不想使用数据属性,我想完全在javascript中完成。如果可能的话,我想加入现有的不显眼的东西。

有什么想法吗?

我想我可以先写一个函数:

function isChristmas()
{
   return $('#isChristmas').val() == 'christmas';
}

那么也许我可以以某种方式注册它,以便在提交时调用它?通过注册某种处理程序直接进入验证代码,或者编写我自己的处理程序(提交按钮单击事件)来调用 isChristmas(),如果它为 false,则调用一个方法来显示验证错误。

我不确定这些不显眼的东西有多灵活。我想另一件可取的事情是,如果在绕过验证的情况下提交页面,我也可以检查服务器端并让它返回视图并以某种方式以这种方式显示错误。

C# ASP.NET-MVC 不显眼的 javascript

评论

0赞 Hintham 12/4/2015
查看链接
0赞 12/5/2015
为什么不想使用验证属性来执行此操作?这就是它们的设计目的,意味着您可以开箱即用地(并且使用更少的代码)进行客户端和服务器端验证。您可以随时添加自己的规则,但随后需要在服务器上再次重复该逻辑。属性听起来应该是一个属性,在这种情况下,您可以在属性上使用万无一失或类似的属性。jquery.validationIsChristmasboolean[RequiredIfTrue("IsChristmas")]Name

答: 暂无答案