[英]Validation / Remote Validation with knockout.js in vb.net mvc
非常简单的目标,我想确保用户输入的用户名在输入后立即是唯一的。
我以为我可以使用远程验证,但该页面使用knockout.js,因此viewmodel是JavaScript。 从我收集的内容中,我必须在我的模型中传递,该模型在VB中具有数据注释以使用远程验证。 我似乎无法找到包含html的此功能的示例,因此很难弄清楚。
我如何通过淘汰赛完成类似的事情? 我见过另一个淘汰验证库,但不想在解决方案中添加另一个库,除非它是唯一的选择。 它似乎应该有一个比jquery onchange事件更好的东西,并使用AJAX来调用我的控制器上的函数。
我想我最终必须在控制器上调用我的函数来检查数据库,它更多的是jquery / html属性,我可以用尽可能干净的方式做到这一点,我正在努力。 谢谢你的建议。
您可以在viewmodel上订阅用户名observable的更改,并向将返回bool的控制器发出ajax请求。
像这样的东西
1)您的视图模型
function registrationViewModel() {
var self = this;
self.username = ko.observable();
self.usernameUniqueue = ko.observable(true);
self.username.subscribe (function() {
$.ajax({
url: '/registration/isusernameuniqueue',
data: { username: self.userName() },
type: 'POST',
success: function(result) {
self.usernameUniqueue(result);
}
});
});
}
ko.applyBindings(new registrationViewModel())
2)你的观点
<input type="text" data-bind="value: username" />
<span data-bind="visible: !usernameUniqueue()" style="display:none">user name not uniqueue</span>
3)你的控制器
public class Registration : Controller
{
[HttpPost]
public ActionResult IsUsernameUniqueue(string username)
{
// make a check here and return true or false...
return Json(/*true or false*/);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.