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