2011-11-25 83 views
0

比方說,我有一個局部視圖X.ascx這樣的:ASP.NET MVC 3 - 告訴partialview regrab viewdata值?

<div id = "updateTargetIdForAjaxForm"> 
... javascript code which only has function definitions. 
... ajax form with buttons inside 
    <div id = "stuff"></div> 
    <script type = "text/javascript"> 
     do things to "stuff" div as soon as X.ascx is loaded. 
    </script> 
</div> 

現在我要更新X.ascx的東西,基於Ajax響應。此前,我正在返回PartialView,但是內聯JavaScript對東西做的事情不會這樣,這意味着當重新加載X.ascx時,內聯JavaScript將不會執行。

那麼有沒有一種方法,我不能在我的控制器中返回PartialView,但只是更新ViewData值並告訴PartialView重新獲取更新的ViewData值?還可以根據服務器的響應調用一個或兩個javascript函數?

+0

你可以嘗試禁用AJAX緩存,看看它是如何工作的http://api.jquery.com/jQuery.getJSON/。這裏是你如何做到這一點$ .ajaxSetup({cache:false}) – CoffeeCode

回答

0

我看到兩種可能的方式去:

修復你的JavaScript代碼與動態加載的局部視圖運行:

這兩個應該可以幫助你出。

另一種方法是在您的控制器上創建一個可以返回JSON結果的動作,並且從jQuery您應該能夠處理JSON對象並更新您的表單。你的行動可能看起來像:

public JsonResult GetFormValues() 
{ 
    var jsonFormValues = new 
    { 

     key1 = "abc", 
     key2 = "123", 
     key3 = "abcdef" 

    }; 
    return Json(jsonFormValues, JsonRequestBehavior.AllowGet); 
} 

,並檢查了有關如何處理結果