[英]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.