如何在mvc3 EF5中_layout.cshtml中的侧边栏内绑定模态数据

时间:2015-12-11 15:51:46

标签: asp.net-mvc asp.net-mvc-3 razor

我想在_layout.cshtml页面的右侧边栏内显示模态数据,因此数据将显示在每个视图上。在这里,我为该数据创建了一个PartialView,我已将其放置在_layout的右侧栏内。它在索引页面上工作正常,但是当我重定向到另一个页面时,它会给我错误。 enter image description here

_layout.cshtml  

    <div class="col-md-9 contentbar">
        @RenderBody()
    </div>
    <div class="col-md-3" style="padding-top: 20px;">

        <ul style="font-weight: bold; list-style-type: none; padding: 0px;">
            <li style="font-weight: bold;">Tv Serial Latest                   
                        @{Html.RenderPartial("ListAllTvt");}
            </li>
        </ul>
    </div>
</div> 

PartialView(ListAllTvt.cshtml)

@model  IEnumerable<Cmedia.Models.TVSerialModel>
<ul style="padding: 0; font-weight: normal; list-style-type: none;">
      @foreach (var item in Model)
      {
        <li>@Html.ActionLink(@item.Serial_Name, "ListAllEpisode", "TvSerialEpisode",new { id = item.Serial_ID}, null) </li>
      }
 </ul>

TvSerialContoller.cs

public class TvSerialController : Controller
{
    public ViewResult Index()
    {
       List<TVSerialModel> tv = tvContext.dbTvSerials.ToList();
       return View(tv);
    }

    public ActionResult Detail(Int32 id)
    {
       TVSerialModel tvserial = tvContext.dbTvSerials.Find(id);
        return View(tvserial);
    }

    public ActionResult ListAllTvSeri()
    {
       List<TVSerialModel> tv = tvContext.dbTvSerials.ToList();
       return View(tv);
    }
}

我想当索引视图调用它时默认设置模型值因为索引和部分视图使用相同的模型,但是当我重定向到另一个页面时,它会刷新模型数据,然后我得到错误。我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

如果您需要与布局中的数据进行交互,则必须使用子操作。没有别的办法。

public class TvSerialController : Controller
{
    ...

    [ChildActionOnly]
    public ActionResult ListAllTvt()
    {
        var model = // get data;
        return PartialView("_ListAllTvt", model);
    }
}

在你的布局中:

@Html.Action("ListAllTvt", "TvSerial")