Tag: razor

剃刀嵌套布局与级联部分

我有一个使用Razor作为视图引擎的MVC3网站。 我希望我的网站可以换肤。 大多数可能的皮肤足够相似,可以从共享的主布局派生。 所以我正在考虑这个devise: 但是,我希望能够调用底层的RenderSection中的_Common.cshtml ,并使其在最上层的Detail.cshtml定义一个部分。 这不起作用: RenderSection显然只渲染定义下一层的部分。 当然,我可以在每个皮肤中定义每个部分。 例如,如果_Common需要为Detail定义的部分调用RenderSection("hd") ,我只需将它放在每个_Skin ,它就可以工作: @section hd { @RenderSection("hd") } 这会导致代码的重复(因为每个皮肤现在都必须具有相同的部分)并且通常感觉混乱。 我对Razor还是个新手,似乎我可能会错过一些明显的东西。 debugging时,我可以在WebViewPage.SectionWritersStack中看到完整的定义部分列表。 如果我能告诉RenderSection在放弃之前查看整个列表,它会find我需要的部分。 唉,SectionWritersStack是非公开的。 或者,如果我可以访问布局页面的层次结构,并尝试在每个不同的上下文中执行RenderSection,我可以find我需要的部分。 我可能错过了一些东西,但我没有看到任何方式来做到这一点。 除了我已经提到的方法之外,有什么方法可以实现这个目标吗?

在Razor视图中发出未编码的string

正如ScottGu在博客中所说:“默认情况下,使用@块发射的内容会自动进行HTML编码,以更好地防止XSS攻击情况”。 我的问题是:你怎么能输出一个非HTML编码的string? 为了简单起见,请坚持这个简单的例子: @{ var html = "<a href='#'>Click me</a>" // I want to emit the previous string as pure HTML code… }

调用@ Html.Partial来显示属于不同控制器的局部视图

我正在开发一个ASP.NET MVC 3应用程序,其内容页面有一个布局元素的通用模式。 但是,由于login页面没有遵循此布局,因此我无法将此布局放置在\Views\Shared\_Layout.cshtml 。 所以我想添加另一个共享的布局,比如\Views\Shared\_Content.cshtml ,然后从内容视图中调用它,但不幸的是这些视图属于不同的控制器。 有没有办法调用@Html.Partial属于不同的控制器的视图?

ASP.NET MVC Razor串联

我正在尝试使用Razor视图引擎呈现一个如下所示的HTML列表: <ul> <li id="item_1">Item 1</li> <li id="item_2">Item 2</li> </ul> 我试图用来呈现这个列表的代码是: <ul> @foreach (var item in Model.TheItems) { <li id="item_@item.TheItemId">Item @item.TheItemId</li> } </ul> parsing器是窒息的,因为它认为id属性中的下划线右边的所有内容都是纯文本的,不应该被parsing。 我不确定如何指示parsing器呈现TheItemId。 我不想只在包含item_前缀的模型对象上有一个属性。 我也必须保持这种语法,因为我正在使用带有JQuery Sortable的列表以及需要使用此语法格式化id属性的serialize函数。

剃刀视图引擎 – 如何添加部分视图

我想知道,如果可能的话,是使用新的剃刀视图引擎渲染局部的最佳方式。 我知道这是当时还没有完成的事情 现在我正在使用RenderPage来呈现用户控件: @RenderPage("~/Views/Shared/LocaleUserControl.cshtml",ViewData.Model) 调用RenderPage的页面使用一个布局(主)页面,定义了三个部分:TitleContent,HeadContent和Maincontent。 当我试图从这个页面呈现我的语言环境控件时,看起来这些部分也是必需的 – 它们应该只在调用页面中需要并且存在。 我收到以下消息,不pipe是否包含我的部分视图中的部分(显然,我不想包括这些部分,但它似乎是一个有趣的debugging点…)。 以下部分已被定义,但尚未在布局页面“〜/ Views / Shared / LocaleUserControl.cshtml”上呈现:TitleContent; HeadContent; searchMaincontent 我的部分观点如下(改编自以下链接 ): @inherits System.Web.Mvc.WebViewPage<LocaleBaseModel> @using System.Web.UI; <p> @Html.LabelFor(model => Model.CountryName) <br /> @Html.DropDownListFor(model => Model.CountryName,null, string.Empty, new { @class = "text", accesskey="u"}) </p> <p> @Html.LabelFor(model => Model.StateProvince) <br /> @Html.DropDownListFor(model => Model.StateProvince, null, string.Empty, new { @class = […]

剃刀不理解未封闭的HTML标签

用RazorViewEngine,我可以这样做: if (somecondition) { <div> some stuff </div> } 但我似乎无法做到这一点(剃刀弄糊涂): if (somecondition) { <div> } if (someothercondition) { </div> } 我有一个情况,我需要把我的开始和结束html标签在不同的代码块 – 我怎么能在剃刀这样做?

有没有可能用Razor创build一个通用的@helper方法?

我正在试图写一个Razor的帮手,如下所示: @helper DoSomething<T, U>(Expression<Func<T, U>> expr) where T : class 不幸的是,parsing器认为<T是一个HTML元素的开始,我最终得到一个语法错误。 是否有可能用Razor创build一个通用方法的帮助器? 如果是这样,语法是什么?

使用Razor的Html.RenderPartial()语法

这是有效的,因为它以stringforms返回部分视图渲染的结果: @Html.Partial("Path/to/my/partial/view") 但我更喜欢使用RenderPartial ,它似乎我需要写: @{Html.RenderPartial("Path/to/my/partial/view");} 代替: @Html.RenderPartial("Path/to/my/partial/view"); 为了得到它的工作。 错误信息: Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 如果有更好的方法,而不是打开代码块@{…}只是一个方法调用?

在安装ASP.NET MVC 4 Beta之后引发InvalidCastException

在使用ASP.NET MVC 3的机器上安装ASP.NET MVC 4 Beta之后,我得到以下exception。 System.InvalidCastException由用户代码未处理消息= [A] System.Web.WebPages.Razor.Configuration.HostSection不能转换为[B] System.Web.WebPages.Razor.Configuration.HostSection。 typesA来源于位于“C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System”上下文“Default”中的“System.Web.WebPages.Razor,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35” .Web.WebPages.Razor \ v4.0_1.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll”。 typesB来源于'System.Web.WebPages.Razor,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35',位置为'C:\ Windows \ Microsoft.Net \ assembly \ GAC_MSIL \ System .Web.WebPages.Razor \ v4.0_2.0.0.0__31bf3856ad364e35 \ System.Web.WebPages.Razor.dll”。 来源= System.Web.WebPages.Razor 堆栈跟踪: […]

使用Razor / MVC3将AssemblyVersion变成网页的问题

我在我的_Layout.cshtml文件的脚注中使用下面的代码将AssemblyInfo版本数据放入我的MVC3站点中每个页面的页脚。 然而: @System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString() 只需打印在页脚中: Revision 0.0.0.0 当我修改视图来显示“执行程序集”的所有程序集信息使用以下 @System.Reflection.Assembly.GetExecutingAssembly().GetName().ToString() 其中打印以下内容: Revision App_Web__layout.cshtml.639c3968.hlogy75x, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null 这表明“执行大会”不是我的主要应用程序,它是视图本身。 我如何获得实际应用程序的汇编信息,而不仅仅是单个视图?