在同一视图中加载两个控制器

时间:2013-07-16 08:10:04

标签: c# sql asp.net-mvc-4

我正在开发一个mvc 4应用程序,我刚刚完成了。我有两个控制器。

 public ActionResult Index()
    {
           return View(new Resources());
    }


    public ActionResult ResourceDetails(int id = 1)
    {
        ResourceItems re = new Resources().GetResDetails(id);
        return View(re);
    }

ResourceDetails是部分视图.it包含

 @model ....Models.ResourceItems
  <div>
   @Html.Raw(@Model.Res_Details)
 </div>

和索引页面包含

 @model IEnumerable<.....Models.ResourceItems>
      <ul id="res">
   @foreach(var Item in Model)
    {
        <a href="~/Resources/ResourceDetails/@Item.Id" ><li>@Item.Res_NA</li></a>
    }
</ul>
<div id="rescontent">

</div>

我想基于Id将部分页面加载到div“rescontent”中。默认Id是1.如何可能

1 个答案:

答案 0 :(得分:2)

您可以使用AJAX:

@model IEnumerable<Puthencruz.Rotary.Club.Models.ResourceItems>
<ul id="res">
    @foreach(var item in Model)
    {
        <li>
            @Html.ActionLink(
                item.Res_NA, 
                "ResourceDetails", 
                "Resources", 
                new { id = item.Id }, 
                new { @class = "detail" }
            )
        </li>
    }
</ul>

<div id="rescontent">

</div>

然后在单独的javascript文件中,您可以使用jQuery订阅锚点的.click事件,并向发送当前项ID的Details控制器操作发送AJAX请求,然后在{{1}中呈现结果} div:

#rescontent

同样从您的控制器操作确保您返回部分视图:

$(function() {
    $('.detail').click(function() {
        $('#rescontent').load(this.href);
        return false;
    });
});