2013-03-14 29 views
0

在阅读了这里的其他几篇文章之后,我已经尝试加载部分视图来点击链接(文本链接实际上可能会更改为一旦我通过这个概念证明阶段的图像)。问题是,我被引导到上点击局部视图,而不是它填充我点击链接视图内一个div:尝试使用Ajax加载局部视图.ActionLink

布局:

<script src="@Url.Content("~/scripts/jquery-1.5.1.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 

的观点:

@Ajax.ActionLink("Item 1 Ajax", "Details", "Portfolio", new { name = "test" }, new AjaxOptions 
         { 
          HttpMethod = "Post", 
          InsertionMode = InsertionMode.Replace, 
          UpdateTargetId = "row1Content", 
          OnComplete = "portfolioItemLoaded" 
         }) 

<div id="row1content"></div> 

<script type="text/javascript"> 
     function portfolioItemLoaded() { 
      alert("Done"); 
     } 
    </script> 

控制器:

public class PortfolioController : Controller 
    { 
     public ActionResult Details(string name) 
     { 
      return PartialView(name); 
     } 
    } 

局部(显然命名test.cshtml):

<p>Item 1 test</p> 

我是否错过了明显的东西?这是我第一次尝试在MVC中使用AJAX,所以可能会有一两个学校的学生错误。

我打算有几个不同的Ajax动作链接调用不同的部分视图,因此我将名称传入控制器。

回答

3

代码固定

你想尝试这个,你有更好的控制,如果错误,等等.... HTML与助手

@Html.ActionLink("Item 1 Ajax", "Details", "Portfolio", Nothing, New With {.Id = "myLink"}) 

的JavaScript

<script type="text/javascript"> 

$(document).ready(function() { 

    $('#myLink').click(getIt); 

}); 

function getIt() { 
     $.ajax({ 
      type: "POST", 
      url: $(this).attr('href'), 
      error: function() { 
       //show error handler 
       }, 
      success: function (r) { 
       $('#row1content').html(r); 
      } 
     }); 

     return false; 
    } 

</script> 
+0

还算可以不能让它工作。如果我将函数返回为true,那么它会像以前一样重定向到部分。如果我返回false,那么没有任何反应。我使用函数将部分html中的结果返回到准备写入div的结果中。我需要调用除了不显眼的ajax jquery JS之外的任何其他东西吗? – 2013-03-14 20:24:38

+0

对不起,我用记事本写了一些东西,跳过了一些东西,代码已经被编辑和测试过了。 – 2013-03-14 21:08:05