ASP.NET MVC - 带内容的可重用控件

时间:2016-12-17 14:27:37

标签: asp.net-mvc asp.net-mvc-4

我有一个ASP.NET MVC应用程序。在我的应用程序中,我有多个布局文件(~10)。我有一块与布局文件类似的HTML。出于这个原因,我想把它放到一个可重用的控件中,因为我预计它将需要一些改变。

在某些引用我使用此控件的布局文件的页面上,我想在控件的内容区域插入一些内容。为了演示,假设我有一个这样的布局文件:

_Layout.cshtml

@** MY REUSED BANNER CONTROL GOES HERE **@

<div class="container">
  @RenderBody()
</div>

Banner.file [不知道该使用什么]

<div class="container-fluid">
  <div class="row">
    <div class="col-lg-3">
      Hello
    </div>

    <div class="col-lg-3">
       @RenderSection("bannerContent", required: false)      
    </div>

    <div class="col-lg-3">
      Leave
    </div>
  </div>
</div>

MyPage.cshtml

@{
  Layout = "~/Views/Shared/_Layout.cshtml"
}

<div>
  Main content goes here
</div>

@section bannerContent {
  <div>This goes into Banner.file</div>
}

上述代码不起作用。它是在那里传达这个想法。根据我的理解,部分视图不起作用,因为部分视图不支持部分。我有什么选择?

1 个答案:

答案 0 :(得分:0)

如果我能理解你需要这样的东西。

  • 在〜/ Views / Shared中创建_banner.cshtml。

    <div class="container-fluid">
    <div class="row">
        <div class="col-lg-3">
            Hello
        </div>
    
        <div class="col-lg-3" id="banner_content"> // Here your page specific content will go
    
        </div>
    
        <div class="col-lg-3">
            Leave
        </div>
    </div>
    

  • _LayOut.cshtml

    @Html.Partial("_banner"); // Reusable banner html
        <div class="container">
            @RenderBody()
        </div>
    
  • MyPage.cshtml

    @{
        Layout = "~/Views/Shared/_Layout.cshtml";
    }
    
    <div>
        Main content goes here
    </div>
    
    @section Scripts {
        $(document).ready(function(){
          $('#banner_conten').html('Your dynamic part.');
      });
    }
    

    我不确定我是否完全理解你的要求。但请检查它是否对您有所帮助。