Asp.net mvc 如何在基于淘汰的表单中实现此验证?

Asp.net mvc 如何在基于淘汰的表单中实现此验证?,asp.net-mvc,knockout.js,Asp.net Mvc,Knockout.js,我开始使用SPA模板(单页应用程序)开发ASP.NET MVC4解决方案 起始模板使用一种post-it设计来管理一些todo列表 我以这种方式稍微修改了模板: 不再为分解元素进行后期设计 而是一个列出所有元素的表格+每个元素上的删除+编辑按钮 在表的末尾:添加按钮 我现在可以编辑表单标记中的一个元素,如下所示: <form data-bind="with: currentTodoList, validate: true"> <h1>Edition</h

我开始使用SPA模板(单页应用程序)开发ASP.NET MVC4解决方案

起始模板使用一种post-it设计来管理一些todo列表

我以这种方式稍微修改了模板:

  • 不再为分解元素进行后期设计
  • 而是一个列出所有元素的表格+每个元素上的删除+编辑按钮
  • 在表的末尾:添加按钮
我现在可以编辑表单标记中的一个元素,如下所示:

<form data-bind="with: currentTodoList, validate: true">
    <h1>Edition</h1>
    <table>
        <tr>
            <td>ID</td>
            <td><b data-bind="text: todoListId"></b></td>
        </tr>
        <tr>
            <td>User ID:</td>
            <td><input class="required" data-bind="value: userId" /></td>
        </tr>
        <tr>
            <td>Title:</td>
            <td><input class="required" data-bind="value: title" /></td>
        </tr>
        <tr>
            <td>Category:</td>
            <td><input data-bind="value: category" /></td>
        </tr>
    </table>

    <p>
        <button data-bind="click: $parent.saveTodoList">Save</button>
        <button data-bind="visible: todoListId, click: $parent.deleteTodoList">Delete</button>
        <button data-bind="click: $parent.showGrid">Cancel</button>
    </p>
</form>

版本
身份证件
用户ID:
标题:
类别:

拯救
删除
取消

正如您在上面看到的,我在表单标记上设置了validate数据绑定,并且我有一些输入元素和所需的类

当我测试这个实现时,它没有按预期工作。例如:

  • 如果我清除(清空)userId字段(这是必需的),我会收到一条红色的验证消息(图1)。嗯
  • 如果我再次填写这个userId字段,红色的验证消息就会消失。嗯
  • 然后,如果我清除(清空)标题字段(这也是必需的),我会在userId字段旁边显示红色的验证消息(图2)。诺克

反之亦然:
userId title
。知道问题出在哪里吗


下面是一个下载我的test VS2012解决方案以重现问题的示例。

好的,因此我稍微使用了您的标记,对视图模型进行了轻微修改(不使用列表,而是编辑单个条目)

看看这个JSFIDLE-

我为ID和用户ID添加了验证消息的范围,跳过了标题和类别的范围

<span data-bind='visible: todoListId.hasError, text: todoListId.validationMessage'> </span>


当Id或UserId字段为空时,您可以看到出现的消息,而title/category字段则不会出现这种情况。

好的,因此我对您的标记进行了一些处理,对视图模型进行了轻微修改(不使用列表,而是编辑单个条目)

看看这个JSFIDLE-

我为ID和用户ID添加了验证消息的范围,跳过了标题和类别的范围

<span data-bind='visible: todoListId.hasError, text: todoListId.validationMessage'> </span>


当Id或UserId字段为空时,您可以看到出现的消息,而标题/类别字段没有出现这种情况。

保存红色验证消息的元素是什么?我没有看到在表单中显示验证消息的span/div。这是正确的。我没有验证消息的任何标记。我认为这是由框架管理的。也许这不是正确的方法?我使用了扩展器来进行这样的验证。我不是一个淘汰赛专家,但这个例子讲述了一些类似于你正在做的事情。是的,我按照他们的建议进行。这就是为什么我需要一些帮助:)无论如何,谢谢。为了明确我想从示例中指出的内容,显示验证错误消息的每个字段都有一个范围,该范围的可见性绑定到相应字段的
hasrerror
字段。也许您需要类似的东西?保存红色验证消息的元素是什么?我没有看到在表单中显示验证消息的span/div。这是正确的。我没有验证消息的任何标记。我认为这是由框架管理的。也许这不是正确的方法?我使用了扩展器来进行这样的验证。我不是一个淘汰赛专家,但这个例子讲述了一些类似于你正在做的事情。是的,我按照他们的建议进行。这就是为什么我需要一些帮助:)无论如何,谢谢。为了明确我想从示例中指出的内容,显示验证错误消息的每个字段都有一个范围,该范围的可见性绑定到相应字段的
hasrerror
字段。也许你需要类似的东西?