2012-04-26 54 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