Tag: razor

如何通过MVCrazor代码获得一个枚举成员的显示名称属性?

我在我的模型中有一个名为“Promotion”的属性,它的types是一个名为“UserPromotion”的标志枚举。 我的枚举成员显示属性设置如下: [Flags] public enum UserPromotion { None = 0x0, [Display(Name = "Send Job Offers By Mail")] SendJobOffersByMail = 0x1, [Display(Name = "Send Job Offers By Sms")] SendJobOffersBySms = 0x2, [Display(Name = "Send Other Stuff By Sms")] SendPromotionalBySms = 0x4, [Display(Name = "Send Other Stuff By Mail")] SendPromotionalByMail = 0x8 } 现在我想能够在我的视图中创build一个ul来显示我的“Promotion”属性的选定值。 这是我迄今为止所做的,但问题是,我怎样才能在这里获得显示名称? <ul> @foreach […]

Razor视图引擎:expression式树可能不包含dynamic操作

我有一个类似于这样的模型: public class SampleModel { public Product Product { get; set; } } 而在我的控制器,我得到一个例外,试图打印出来 @Html.TextBoxFor(p => p.Product.Name) 这是错误的: Exception: An expression tree may not contain a dynamic operation 如果任何人都可以给我一些线索,如何解决这个问题,我会很感激!

为什么Razor _layout.cshtml在文件名中有一个前导下划线?

在默认的ASP.NET MVC 3项目中,layout&partial cshtml文件以下划线开头 _viewstart _Layout _LogOnPartial 这个约定是什么意思,用来做什么? 我需要遵循这个约定吗? 框架是否给一个以下划线开头的.cshtml文件提供了一些特殊的含义?

@media媒体查询和ASP.NET MVC剃刀语法冲突

我有一个使用Razor视图引擎在ASP.NET MVC中运行的大型网站。 我有一个基本的样式表,其中包含整个网站的所有通用样式。 然而有时候,我在页面的<head>中有页面特定的样式 – 通常这是一两行。 我不特别喜欢把CSS放在<head>因为它不是严格区分顾虑,而是对于一两行,这个页面确实是特定的,所以我不需要附加另一个文件并添加到带宽中。 我已经有了一个实例,但是我想把页面特定的媒体查询放到<head> ,但是因为媒体查询使用@符号和括号{},所以它与剃刀语法冲突: @section cphPageHead{ <style> /* PAGE SPECIFIC CSS */ … @media only screen and (max-width : 960px) <– the @ symbol here is clashing! { … } } </style> } 有没有办法解决这个问题?

如何引用razor视图上的.css文件?

我知道如何在_Layout.cshtml文件中设置.css文件,但是如何在每个视图上应用样式表呢? 我的想法是,在_Layout.cshtml中,您有<head>标签可以使用,但在您的非布局视图中没有。 <link>标签去哪了?

MVC 3:如何通过ajax加载时如何呈现没有其布局页面的视图?

我正在学习渐进式增强 ,我有一个关于AJAX化视图的问题。 在我的MVC 3项目中,我有一个布局页面,一个viewstart页面和两个普通的视图。 viewstart页面位于Views文件夹的根目录,因此适用于所有视图。 它指定所有的视图应该使用_Layout.cshtml布局页面。 布局页面包含两个导航链接,每个视图一个。 链接使用@Html.ActionLink()来呈现自己到页面。 现在我已经添加了jQuery,并希望劫持这些链接,并使用Ajaxdynamic地在页面上加载他们的内容。 <script type="text/javascript"> $(function () { $('#theLink').click(function () { $.ajax({ url: $(this).attr('href'), type: "GET", success: function (response) { $('#mainContent').html(response); } }); return false; }); }); </script> 有两种方法可以做到这一点,但我并不特别喜欢: 1)我可以将整个视图的内容放在一个局部视图中,然后让主视图在渲染时调用局部视图。 这样,在控制器中使用Request.IsAjaxRequest() ,我可以根据请求是否是Ajax请求返回View()或返回PartialView() 。 我不能将常规视图返回到Ajax请求,因为那么它会使用布局页面,我会得到注入布局页面的第二个副本。 但是,我不喜欢这样做,因为它迫使我只用@{Html.RenderPartial();}来创build空视图,而这些视图是针对标准GET请求的。 public ActionResult Index() { if (Request.IsAjaxRequest()) return PartialView("partialView"); else return View(); } 然后在Index.cshtml中这样做: @{Html.RenderPartial("partialView");} […]

正确的方式来使用_viewstart.cshtml和部分剃刀视图?

我正在使用_viewstart.cshtml自动将相同的剃刀布局分配给我的意见。 这是我的视图文件夹的根目录中的一个死的简单的文件,看起来像这样: @{ Layout = "~/Views/Shared/_Layout.cshtml"; } 这比在每个视图中添加@Layout指令更干。 然而,这对Razor 部分视图提出了一个问题,因为它们运行_viewstart.cshtml的内容,因此错误地为它们分配了一个布局,这使得它们不再局部。 这是一个假设的项目,显示_viewstart.cshtml文件,共享_layout.shtml文件和部分视图(“AnonBar.cshtml”)。 目前,我正在解决这个问题的方法是在每个局部视图中添加以下行: @{ Layout = ""; } 这在Razor中似乎是错误的expression方式。 (请注意,与Web表单视图引擎不同,文件扩展名与部分视图相同。) 我考虑的其他选项,但更糟糕的是: 把所有的部分视图放到一个公共文件夹中,这样他们就可以共享一个共同的_viewstart.cshtml。 这打破了与他们的控制器在同一个文件夹中的惯例。 不使用部分视图。 这个东西是否仍然由剃刀视图引擎团队充实,还是我错过了一个基本概念?

Razor HtmlHelper扩展(或其他视图命名空间)未find

不知道,如果这是发生在公关或testing版,但如果我在HtmlHelper创build一个扩展方法,它不会在剃刀供电页面识别: namespace SomeNamespace.Extensions { public static class HtmlExtensions { public static string Foo(this HtmlHelper html) { return "Foo"; } } } 我将它添加到Web.config的<Namespaces>部分: <pages> <namespaces> <add namespace="System.Web.Mvc" /> <!– snip –> <add namespace="SomeNamespace.Extensions"/> </namespaces> </pages> 但是当试图查看页面时会引发编译错误: @Html.Foo() 如果我用WebForms重新创build页面,它工作正常。 这是怎么回事? 解决方法 如果我在我的Razor视图中包含@using SomeNamespace.Extensions ,那么它可以工作,但是我宁愿将它放在Web.config

哪里和如何链接_ViewStart.cshtml布局文件?

以下是来自默认MVC 3模板的About.cshtml: @{ ViewBag.Title = "About Us"; } <h2>About</h2> <p> Put content here. </p> 我期望在About.cshtml中可以find对_ViewStart文件的About.cshtml ,但显然不是。 我看了global.asax和web.config ,但我无法findAbout.cshtml文件如何与About.cshtml文件的布局“链接”。 一切都按预期工作,我只想知道发生了什么事情…

我如何在Razor中定义一个方法?

我如何在Razor中定义一个方法?