2010-07-08 61 views
3

我不確定如何發佈此問題,而不包括我網站代碼的一半,但這裏有提到。使用jQuery和AJAX在IE中發佈ASP.NET MVC授權

我有一個網站,有一個轉包表格,一個公司表格和一個聯繫表格。從轉包形式,您可以通過打開jQuery對話框併發布公司或聯繫信息的按鈕創建新公司和/或新聯繫人。從公司的表格中,有一個按鈕可以創建一個新的聯繫人。

從分包形式:

$('#popupCreateCompany').dialog(
     { 
      autoOpen: false, 
      modal: true, 
      width: 600, 
      open: function(event, ui) { 
       if ($('#primary_company').val().length > 0) { 
        $('#secondary').attr('checked', 'true'); 
       } 
       else { 
        $('#primary').attr('checked', 'true'); 
        $('#sec').hide(); 
       } 
      }, 
      buttons: 
      { 
       'Add': function() { 
        var dialog = $(this); 
        var form = dialog.find('input:text, select'); 
        $.post('<%= ResolveUrl("~/company/post") %>', $(form).serialize(), function(data) { 
         if (data.Result == "success") { ... 

$('#popupCreateContact').dialog(
     { 
      autoOpen: false, 
      modal: true, 
      width: 600, 
      buttons: 
      { 
       'Add': function() { 
        var dialog = $(this); 
        var form = dialog.find('input:text, select'); 
        $.post('<%= ResolveUrl("~/contact/post") %>', $(form).serialize(), function(data) { ... 

從公司形式:

$('#popupCreateContact').dialog(
     { 
      autoOpen: false, 
      modal: true, 
      buttons: 
      { 
       'Add': function() { 
        var dialog = $(this); 
        var form = dialog.find('input:text, select'); 
        $.post('<%= ResolveUrl("~/contact/post") %>', $(form).serialize(), function(data) { 
         if (data.Result == "success") { ... 

此功能工作,直到我們實現了一些自定義授權的網站。現在,您可以從分包合同中添加聯繫人,但不能從分包合同中添加公司。您無法從公司表單添加聯繫人。當你點擊「添加」時,沒有任何反應。我在$.post行前後添加了一條警報,它之前已經觸發警報,但之後沒有警報。把斷點放在contact/post處,它永遠不會到達那裏。相同的授權組可以訪問添加分包商,公司和聯繫人。

在公司負責人:

[AcceptVerbs(HttpVerbs.Post), MarlowAuthorize(Roles = "Subcontract_Modify, Admin", ViewName = "AuthorizationError")] 
    public JsonResult Post(company company) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 

同樣的接觸後的程序被調用從分包形式從公司形式。但一個有效,另一個不行。在聯繫人控制器中:

[AcceptVerbs(HttpVerbs.Post), MarlowAuthorize(Roles = "Subcontract_Modify, Admin", ViewName = "AuthorizationError")] 
    public JsonResult Post(contact contact) 
    { 
     if (ModelState.IsValid) 
     { 
      try 
      { 

我試過向控制器中的位置添加授權屬性,我嘗試刪除它們。無論我嘗試哪種組合,我都會得到相同的結果。您可以從分包合同中添加聯繫人,但不能添加公司。而且,您無法添加公司的聯繫人。我一直在想,知道這將導致我看到有什麼區別,但我似乎無法找到它。

編輯 剛走進Firefox中使用Firebug,看來,它的工作在Firefox。但在IE7或IE8中不起作用。

回答

0

得到它的工作,但我很想知道是否有人可以解釋「爲什麼」。

改變了這種

var dialog = $(this); 
var form = dialog.find('input:text, select'); 
$.post('<%= ResolveUrl("~/company/post") %>', $(form).serialize(), function(data) { ... 

,現在工作在IE瀏覽器。

我不明白爲什麼它一直工作到上週,爲什麼它仍然爲分包合同工作,但不是來自分包合同的公司或公司的聯繫人。

3

使用Fiddler並比較Firefox和IE發送的數據的差異。

+0

我從來沒有使用過提琴手。在我最初登錄到我的網站後,在「Web會話」下看不到任何新的列表。我可以看到我所有的堆棧溢出活動。 – RememberME 2010-07-08 20:07:06

+0

沒關係,我明白了。這是因爲該網站是https。 – RememberME 2010-07-08 20:34:06