2013-03-15 58 views
1

我有这样的模型(简体)与淘汰赛ASP.NET MVC剃刀形式不会验证

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

    // Other fields 
} 
与淘汰赛 viewModel

的MVC Razor视图,看起来像这样:

@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中启用)。难道淘汰赛那废墟天(尽管所有的绑定工作完全正常,抑或是一些我在看,并没有看到?

帮助不胜感激!

回答

2

验证不工作淘汰赛绑定....

你要复制在客户端验证,更快的方法是使用基因敲除验证插件,但它是缓慢的,当你有大量的数据..

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

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

0

模型验证不会工作在淘汰赛结合,你必须下载knockoutValidation.js文件,并用基因敲除验证

实例:KnockoutJS

验证用户名

var self = this; 

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