簡體   English   中英

使用vb.net mvc中的knockout.js進行驗證/遠程驗證

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM