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

本文关键字:两个 控制器 加载 视图 | 更新日期: 2023-09-27 18:22:36

我正在开发一个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是一个部分视图页面。它包含

 @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"resontent"中。默认Id为1。的可能性

您可以使用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事件,并向Details控制器操作发送AJAX请求,发送当前项目id,然后在#rescontentdiv:中呈现结果

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

此外,通过控制器操作,确保返回部分视图:

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

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