从jquery验证和淘汰赛中失去理智

Cie*_*iel 11 json jquery-validate asp.net-mvc-3 knockout.js

我一直试图这样做几个月,几个月,几个月,几个月.而且我真的想要让Knockout为我工作而流下眼泪.

去年,我有一些帖子可追溯到这样做.我只是无法通过knockout和asp.net mvc进行验证.

如果我把这$.validator.unobtrusive.parse("#__frmAspect");行放入,我得到验证,但它不遵守提交处理程序.如果我把它拿出来,它服从提交处理程序,但它没有得到任何验证.

这是我的代码 - 全部.(我认为)

主视图

http://pastie.org/2016031

编辑观点

http://pastie.org/2016043

查看模型

http://pastie.org/2016045

控制器和模型粘合剂

http://pastie.org/2016052

Html输出

http://pastie.org/2016100

HtmlTags类

http://pastie.org/2016107

助手

http://pastie.org/2016111

我已经坚持了8个月的字面意思.谁能帮帮我吗?我想要的只是将数据提交回服务器.我不想要ajax,我不想要回调.我不想要任何幻想.我只是想JSON在经过适当的客户端验证后将我的模型发送回服务器,并让它获取数据.这就是我想要的.我不想使用这个$.ajax方法.我有理由为什么我想这样做,而且它们与问题无关.

对RP Niemeyer的回应

是的,那工作!!!!!!!! 哦,我的上帝.我欠你的,就是我生命中的最后8个月.我想寄给你一块以原始卡路里的味道和互联网闷闷不乐的芝士蛋糕.

我觉得我可以从这个问题让我感到沮丧的情况下打开屏幕.如果这个问题听起来很粗鲁,我很抱歉,但是在互联网上没有我看过这种事情.我相信任何其他开发人员都能理解一个似乎没有答案的问题的挫败感.

我不知道你是如何得出这个结论的,我不明白为什么它有效.

我尝试使用对象实例化视图模型(视图模型不是它自己的对象,而是另一个对象的实例)并且它不起作用.换句话说,如果我这样做..

var aspect = function () { 
  this.Id = ko.observable(); 
 // other variables, using ';' and 'this' keyword 
 this.Save = function() { 
   alert('We got to the save function'); 
 } 
} 

var viewModel = new aspect(); 
ko.applyBindings(viewModel, $("#__frmAspect")[0]); 
// attach the jquery unobtrusive validator 
$.validator.unobtrusive.parse("#__frmAspect"); 
// bind the submit handler to unobtrusive validation. 
$("#__frmAspect").data("validator").settings.submitHandler = 
viewModel.Save; 
Run Code Online (Sandbox Code Playgroud)

这种方法不起作用.我可以打扰你向我解释一下有什么不同,为什么?我完全迷失了.

RP *_*yer 14

我认为问题在于,不显眼的库已经在表单上设置了验证,因此您实际上需要进入并设置submitHandler,如:

// attach the jquery unobtrusive validator
$.validator.unobtrusive.parse("#__frmAspect");

// bind the submit handler to unobtrusive validation.
$("#__frmAspect").data("validator").settings.submitHandler = viewModel.Save;
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/rniemeyer/V8MhG/