1

我有这样的模型(简化)

public class User
{
  [Required]
  public string UserName { get; set; }

  // Other fields
}

一个带有淘汰赛的 MVC 剃刀视图,viewModel如下所示:

@using (Html.BeginForm("MyAction", FormMethod.Post, new { id = "profileEditorForm" }))
{
  @Html.ValidationSummary(false)

  @Html.LabelFor(n => n.UserName)
  @Html.TextBoxFor(n => n.UserName, new { data_bind = "value: UserName" })
  @Html.ValidationMessageFor(n => n.UserName)

  @* Other fields *@    

  <p>
    <input type="submit" value="Save" alt="" title="" />
    <a href="/">Cancel</a>
  </p>
}


<script type="text/javascript">

  $(function() {
    var vm = new viewModel(@(Html.Raw(Json.Encode(@Model))));
    ko.applyBindings(vm);

    $("#profileEditorForm").validate({
      submitHandler: function(form) {
        alert('Validating ' + ko.toJSON(vm));
        if (vm.save)
          window.location.href = "/";
        return false;
      }
    });
  });

  var viewModel = function(model) {
    var self = this;
    self.UserName = ko.observable(model.UserName);
    // Other fields

    self.save = function() {
      alert('Saving ' + ko.toJSON(self));
    }
  };
};
</script>

我无法让它给我客户端验证,即使它通过验证功能(警报插入表明)然后直接进入保存并将无效的内容发回 MVC 操作。

你能帮我如何在这个表单上启用客户端验证(它在 web.confir 中启用)。是淘汰赛破坏了这一天(尽管所有绑定都工作得很好?还是我正在看但没有看到的东西?

帮助高度赞赏!

4

2 回答 2

2

验证不适用于淘汰赛绑定....

您必须在客户端复制验证。更快的方法是使用敲除验证插件,但是当你有很多数据时它会很慢。

https://github.com/ericmbarnard/Knockout-Validation

或者您可以只使用 jquery 验证。

于 2013-03-16T08:41:45.497 回答
0

模型验证在淘汰赛绑定中不起作用,您必须下载knockoutValidation.js文件并使用淘汰赛验证

例子 :

在 KnockoutJS 中验证用户名

var self = this;

self.UserName = ko.observable(UserName).extend({
    required: {
        message:"Please enter User Name"
    }
});
于 2014-05-21T05:11:24.110 回答