2012-08-10 47 views
0

我使用jQuery來打開一個模式對話框是這樣的:從阿賈克斯模式對話框的值返回到主視圖

$('#AddCustomerDialog').dialog(
    { 
    autoOpen: false, 
    width: 400, 
    resizable: false, 
    modal: true, 
    buttons: 
    { 
     "Done": function() { 
     $(this).dialog('close'); 
     } 
    } 
}); 


$('#AddCustomerLink').click(function() { 
    linkObj = $(this); 
    var dialogDiv = $('#AddCustomerDialog'); 
    var viewUrl = "/Cases/AddCustomer"; 
    $.get(viewUrl, function(data) { 
     dialogDiv.html(data); 
     //open dialog 
     dialogDiv.dialog('open'); 
    }); 
    return false; 
    }); 
}); 

對話框上的局部視圖的目的是進入一個新的客戶記錄「上蒼蠅「。我希望將新的客戶ID返回到調用視圖,但我不確定如何使用我正在使用的代碼執行此操作。任何建議或例子,將不勝感激。

* 編輯2012年8月16日 **

所以我應該做這樣的事情與控制器的動作?

public JsonResult AddCustomer() 
{ 
    var result = ...insert statement here 

    ...linq select to get new customerid 
    { 
     CustomerID = c.CustomerID 
     ... 
    }; 
return Json(variable, JsonRequestBehavior.AllowGet); 
} 

我知道這是混亂的,但有了這個基本想法會給我我需要什麼?

[R

回答

1

您可以使用「完成」按鈕點擊回撥如

if (!$("#AddCustomerDialog form").valid()) 
    return false; 
var postUrl = $("#AddCustomerDialog form").attr('action'); 
$.post(postUrl, $(containerSelector + ' form').serialize(), 
     function (result) { 
      $("#AddCustomerDialog").dialog("close"); 
      var addedCustomerId = result.Id; 
     }); 

此外,AddCustomer action(對於發佈請求)應返回以Json格式添加的客戶。

+0

嗨丹尼斯 我添加了一些代碼給我的問題,根據您對控制器返回json的建議。我的基本想法是否正確? – Ryan 2012-08-16 14:13:18

0

在HTML頁面中的腳本聲明一個變量,現在從你的PHP代碼返回的數據添加變量名稱回聲腳本,並在這裏設置要

的ID在你的腳本: var foo;

在你的PHP代碼

echo 'data for insert in div'; 
echo '<script>foo=id_you_want</script>'; 
exit(); 

與此設置在HTML頁面foo的變種與新客戶的ID,並可以使用它

+0

嗨亞歷克斯,我使用ASP.NET MVC不是PHP。 – Ryan 2012-08-16 14:28:06

+0

mmmm但邏輯必須相同!! .... – 2012-08-16 15:02:53