asp.net-mvc – 布局和不同的内容和样式,复杂的MVC4应用程序
我正在查看很多教程,从web-forms和.master vs MVC Master布局转移.
我的问题是关于嵌入式全局文件与单个页面自己的文件. (files =样式和脚本) 在我的视图中的旁注我已经实现了一个小命名约定/规则,以便layouts-masters有一个LO后缀, 在我的布局大师我有: (为简单起见)只是一个主栏 – 链接(这样所有页面都有“链接”顶栏) 这是主要的布局 [textlink1] | [textlink2] | [textlink3] | [textlink4] .... 然后我有索引页面(它的名字是cpanel) 在我的索引cpanel.chtml中我除了主要布局的文本栏之外还添加了图标…顶部栏的复制形式为 [IMG] [IMG] page_name page_name [IMG] [IMG] page_name page_name 所以一起Layout-master _SAdminLO.cshtml cpanel.chtml – 来自我的应用程序的“主页” 现在我的个人页面完全独立于他们的行动 但他们需要的是顶部栏的css html,而不是cpanel(索引) 所以我的情况是这样的: <html> + <head> + <body> markup of `LO` &安培; <html> + <head> + <body> markup of `individual.cshtml ` 文件 : -主- <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <link href='@Href("~/Content/css/GlobUtils.css")' rel='stylesheet' type='text/css' /> <title>@ViewBag.Title</title> @Scripts.Render("~/js")// C# bundle @RenderSection("head",false) </head> <body id="bodid"> <h2>Cpanel</h2> <div id="navbar"> <ul id="nav"> <div class="menu-main-container"> <ul id="menu-main" class="menu"> <li id="menu-item-0" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-0 current_page_item menu-item-0"> @Html.ActionLink("Cpanel","Cpanel","ControlPanel") </li> <li id="menu-item-1" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-1 current_page_item menu-item-1"> @Html.ActionLink("Templates Generator","TemplateGenerator","ControlPanel") </li> <li id="menu-item-2" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-2 current_page_item menu-item-2"> @Html.ActionLink("Content Editor","ContentEditor","ControlPanel") </li> <li id="menu-item-3" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-3 current_page_item menu-item-2"> @Html.ActionLink("Files Uploader","FilesUploader","ControlPanel") </li> <li id="menu-item-4" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-4 current_page_item menu-item-2"> @Html.ActionLink("Code Dev","CodeDev","ControlPanel") </li> </ul> </div> </ul> </div> @RenderBody() </body> </html> someindividualpage.chtml @{ Layout = "~/Views/Shared/_EvProAdminLO.cshtml"; } @model MvcE.Models.IndexModel.CreatedTemplateJPacket <!DOCTYPE html> @{ ViewBag.Title = "TemplateGenerator"; } <html> <head> <!--[if lt IE 9]> <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width,initial-scale=1" /> <title>Template Generator</title> <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" /> <script src="http://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.0/jquery-ui.js"></script> <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> <link href='@Href("~/Content/css/Chrm_TemplateGenerator.css")' rel="stylesheet" type="text/css" /> </head> <body id="bodid"> <div id="DivEditor"> <h1 id="ContH"> ControlPanel - TemplateGenerator</h1> <div class="container-fluid"> <div> <a class="btn btn-CtrlsTmplt" id="save" href="#">save</a> <a class="btn btn-CtrlsTmplt" id="load" href="#">load</a> <a class="btn btn-CtrlsTmplt" id="clear" href="#">clear</a> <input type="text" id="scr1" class="input_Border_AndBGClear" /> </div> <hr/> @*----------------------------------localData-------------------------------------*@ <div id="localData"> <input id="DataValue_FormFileds" type="hidden" /> </div> </div> </div> <div id="SaveNewTmpltWwrap"> </div> <script src='@Href("~/Js/jspart2.js")' type="text/javascript"></script> </body> 解决方法
也许我不太了解,但似乎你可以使用自定义部分.
_布局 <html> <head> <title>@ViewBag.Title</title> @* common script,css *@ <script src="jquery.js"></script> @* variable script,css *@ @RenderSection("customHead",required: false) </head> <body> <!-- nav bar here --> @RenderBody() @RenderSection("footer",required: false) </body> </html> SomePage.cshtml @{ Layout = "~/Views/Shared/_EvProAdminLO.cshtml"; ViewBag.Title = "Some Page 1"; } @section customHead { <script src="page1.js"></script> } @* no <html>,<head>,<body> *@ @* inserted into RenderBody() *@ <div id="page1content"> ... </div> 因为声明了必需的部分:false,除非视图包含该部分,否则它将不会尝试渲染任何内容. 您可以更改每页的部分内容. SomePage2.cshtml @{ Layout = "~/Views/Shared/_EvProAdminLO.cshtml"; ViewBag.Title = "Some Page 2"; } @section customHead { <script src="page2.js"></script> } @section footer { <div>footer</div> } <div id="page2content"> </div> 您可以使用部分视图和子操作来执行可变内容呈现,而不是多个布局. SomePage3.cshtml @{ Layout = "~/Views/Shared/_Layout.cshtml"; ViewBag.Title = "Some Page 3"; } @Html.Partial("widget") @{Html.RenderAction("UserInfo");} 现在大部分布局内容被删除,它变成了内容包含,而不是用排除规则定义所有内容. 我发现更少的布局页面和部分使用更易于维护,页面更容易理解通过查看视图页面将呈现的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – Glimpse.axd 403ing在IIS上
- asp.net-mvc – 如何在存储库MVC6中注入Applicat
- 将ASP.NET成员资格表添加到我自己的现有数据库中
- .Net 内存对象分析
- asp.net – UpdatePanel似乎重新编码页面标题中的
- asp.net – WS-Federation真正做了什么(深入并通
- asp.net-mvc – 将ASP.NET MVC应用程序部署到IIS
- asp.net-core – .NET Core HttpClient是否具有拦
- asp.net-mvc – Mvc验证正则表达式只有数字?
- 如果我在ASP.NET网页中打开数据库连接会发生什么