2012-04-26 36 views
4

我想使用ajax渲染局部視圖。
當我提交按鈕時,必須呈現局部視圖。
我可以使用ActionLink實現它,但我想調用JavaScript的Action。
但下面的代碼不起作用。 Action被調用,但部分視圖不會被渲染。
如何在jQuery上設置UpdateTargetId ajax

查看

@section script{ 
<script type="text/javascript"> 
    function test() { 
     $.ajax(
     { 
      type: "POST", 
      url: "Test", 
      data: "", 
      success: function (result) { alert("OK!!"); }, 
      error: function (req, status, error) { 
       alert("Damn!!");} 
     }); 


    } 
</script> 
} 

<input type="submit" onclick="test()" /> 
<div id="Container"> 

控制器

public ActionResult Test() 
{ 
    if (Request.IsAjaxRequest()) 
    { 
     return PartialView("ViewUserControl1"); 
    } 
    return View(); 
} 

管窺ViewUserControl1

Hello world 

這工作,但不是我想要做的

@Ajax.ActionLink("click me", "Test", new AjaxOptions { UpdateTargetId = "Container" }) 

回答

6

您的網址可能不正確。它取決於您在Global.asax中定義的路由設置 。但是,如果您的操作位於HomeController中,通常您的url應該看起來像 「/ Home/Test」。這是更好地使用 網址幫手越來越行動的URL:

... 
url: '@Url.Action("Test", "Home")' 
... 

可以使你的下一個方式部分:

... 
success: function (result) { $('#elementId').html(result) }, 
... 

此外,如果你要更新塊,不要忘記清除它首先,如果它包含形式與不顯眼的驗證 - 解析表單。

+0

我指定了URL:url:「./Controller/Action/{id}」 – shammelburg 2014-08-28 14:03:38

+0

這太好了!我現在可以將一個UpdateTargetID傳遞給MVC中我的複選框的Javascript函數。我只需要像在這裏和現在當用戶檢查一個盒子時一樣用一個磅符號作爲UpdateTargetID的前綴,我可以立即更新一個單獨的div容器中的列表。 – MikeTeeVee 2016-07-21 16:12:17