2011-11-25 46 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); 
} 

,并检查了有关如何处理结果