【问题标题】:ASP.NET MVC razor form with knockout won't validate带有淘汰赛的 ASP.NET MVC 剃须刀表单将无法验证
【发布时间】:2013-03-04 20:03:25
【问题描述】:

我有这样的模型(简化)

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

  // Other fields
}

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

@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 中启用)。是 Knockout 破坏了这一天(尽管所有绑定都工作得很好?还是我正在看而没有看到的东西?

高度赞赏!

【问题讨论】:

    标签: asp.net-mvc razor knockout.js validation


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      例子:

      在 KnockoutJS 中验证用户名

      var self = this;
      
      self.UserName = ko.observable(UserName).extend({
          required: {
              message:"Please enter User Name"
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2014-06-16
        • 2018-10-09
        • 2014-04-13
        • 2013-02-25
        • 1970-01-01
        • 2014-02-24
        • 2013-10-18
        • 2012-02-18
        • 2013-03-22
        相关资源
        最近更新 更多