2010-11-22 78 views
0

什麼是最好的方式來覆蓋ASP.NET MVC 2中的內置登錄機制,以便如果用戶需要登錄(或[授權]標記裝飾控制器操作)彈出模式對話框?如何:(jQuery)模態登錄對話框與ASP.NET MVC 2?

香港專業教育學院一直在尋找了一段時間,並沒有真正做到這一點

任何幫助或指導,將不勝感激

jQuery是不是一個先決條件,但我熟悉它

回答

0

可以公開Web服務在您的項目中將驗證用戶是否已登錄。在$(document).ready()上執行$.ajax()調用Web服務。根據結果​​,您可以在UI庫中爲JQuery使用the $.dialog()函數顯示模式彈出窗口。

2

這是很有可能的,不是太難。

http://weblogs.asp.net/mikebosch/archive/2008/02/15/asp-net-mvc-submitting-ajax-form-with-jquery.aspx

這是另一篇文章,我似乎無法找到任何更多:

是的,這是可能的。只需使用mike bosch在此描述的方法提交登錄表單,並返回帶有returnUrl的json數據結構(如果有的話)。

我創建了一個輕量級的LoginResultDTO類,我回來作爲JSON:

public class LoginResultDTO 
{ 
    public bool Success {get;set;} 
    public string Message {get;set;} 
    public string ReturnUrl {get;set;} 
} 

下面是從了登錄視圖腳本塊:

<script type="text/javascript"> 
     $(document).ready(function() { 
      var form = $($("form")[0]); 
      form.submit(function() { 
       var data = form.serialize(); 
       $.post(form.attr("action"), data, function(result, status) { 
        if (result.Success && result.ReturnUrl) { 
          location.href = result.ReturnUrl; 
        } else { 
         alert(result.Message); 
        } 
       }, "json"); 
       return false; 
      }); 
     }); 
</script> 

這將阿賈克斯包裹登錄表單。請注意,這是可能的最簡單的JavaScript代碼實現,但它是一個開始的地方。

然後我就修改了的AccountController,並在相關的地方了登錄行動把這樣的事情:

if(Request.IsAjaxRequest()) 
{ 
    return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"}); 
}else 
{ 
    return View(); 
} 

所以這是一個超輕,但認證如何jQuery的可以在ASP中完成比較完整的版本。網絡mvc。

+0

這看起來很棒 - 虐待嘗試實施這個馬上,讓你知道它是怎麼回事:) – Jerrold 2010-11-23 00:50:37