AddingCSSReferencesfromPartialViewstoPages需求)?如果您使用MVC3和Razor,将每页项目添加到您的部分的最佳方法是:1)从您的布局页面调用RenderSection()2)在子页面中声明相应的部分:/Views/Shared/_Layout。cshtml:@RenderSection("HeadArea")/Views/Entries/Index.cshtml:@sectionHeadArea{}生成的HTML页面包含如下部分:您还可以使用Telerik的开源控件来执行MVC,并执行以下:group.Add("stylesheet.css"));在头部和组中.Add("script.js"));在页面底部的脚本部分。您可以继续在任何视图或部分视图上添加脚本,它们应该可以工作。如果您不想使用那个组件,您总是可以从那里激发自己的灵感并做一些更自定义的事情。哦,对于Telerik,您还可以选择合并和压缩脚本。您可以将javascript块中的部分视图加载到head样式中,但考虑到出于同样的原因您可能希望在head中使用javascript块,这将是愚蠢的。我最近发现了一些很酷的东西。您可以将局部视图序列化为字符串,并将其作为JSON对象的一部分发送回客户端。这允许您将其他参数与视图一起传递。将视图作为JSON对象的一部分返回您可以使用JQuery和ajax获取JSON对象并使用局部视图加载它,然后另一个JSON属性可能是您的样式块。JQuery可以检查您是否返回了样式块,如果是,则将其放在head部分。类似于:$.ajax({url:"your/action/method",data:{some:data},success:function(response){$('#partialViewContainer).html(response.partialView);if(response.styleBlock!=null)$('head').append(response.styleBlock);}});您可以使用HttpModule来操作响应HTML并将任何CSS/脚本引用移动到位。这并不理想,我不确定性能影响,但它似乎是解决问题的唯一方法,并且没有(a)基于javascript的解决方案,或(b)反对MVC原则。另一种违反MVC原则的方法是使用ViewModel并响应页面的Init事件以设置所需的css/javascript(即myViewModel.Css.Add(".css")并在您的脑海中渲染??cssviewmodel-集合的内容。为此,您需要创建一个基本viewmodel类,所有其他模型都继承自alapublicclassBaseViewModel{publicstringCss{get;set;}}在您的母版页中,您将其设置为使用此视图model"%>和你的头你可以写出Css属性的值现在,在你的部分视图中你需要有这段代码,它在MVC中有点难看以下仅在启用javascript时有效。这是我用你所提到的场景的小助手://标准方法-按照as(cp)x文件中的定义呈现publicstaticMvcHtmlStringCss(thisHtmlHelperhtml,stringpath){returnhtml.Css(path,错误的);}//覆盖-允许javascript将css放在头部publicstaticMvcHtmlStringCss(thisHtmlHelperhtml,stringpath,boolrenderAsAjax){varfilePath=VirtualPathUtility.ToAbsolute(path);HttpContextBasecontext=html.ViewContext.HttpContext;//如果文件已经存在,则不要添加文件if(context.Items.Contains(filePath))returnnull;//否则,将其添加到上下文并放在页面上//这当然只适用于通过当前//请求和此方法进入的项目context.Items.Add(filePath,filePath);//js和css函数字符串conststringjsHead="";conststringjsFunctionStt="$(function(){";conststringjsFunctionEnd="});";stringlinkText=string.Format("",filePath);stringjsBody=string.Format("$('head').prepend('{0}');",linkText);varsb=newStringBuilder();if(renderAsAjax){//现在加入所有内容sb.Append(jsHead);sb.AppendFormat("rnt");sb.Append(jsFunctionStt);sb.AppendFormat("rntt");sb.Append(jsBody);sb.AppendFormat("rnt");sb.Append(jsFunctionEnd);sb.AppendFormat("rn");sb.Append(jsFoot);}else{sb.Append(linkText);}返回MvcHtmlString.Create(sb.ToString());用法:如上所述,仅在启用javascript的情况下对我有效,限制了它的用处查看通过向页面添加CSS引用共享的所有内容。如果对您有用,需要了解更多C#学习教程,希望您多多关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
