标签: razor

202
推荐指数
5
解决办法
9万
查看次数

@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>
}  
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

css razor media-queries asp.net-mvc-3

201
推荐指数
3
解决办法
7万
查看次数

MVC 4 @Scripts"不存在"

我刚刚创建了一个ASP.NET MVC 4项目,并使用Visual Studio 2012 RC创建了一个Controller和Razor Views for IndexCreateActions.

当我来运行应用程序并浏览到Create视图时,显示以下错误:

编译器错误消息:CS0103:当前上下文中不存在名称"脚本"

问题是以下代码自动添加到视图的底部:

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
Run Code Online (Sandbox Code Playgroud)

为什么Scripts不存在?

我查看了Assembly System.Web.Mvc.dll,v4.0.0.0中的基本Web页面类

我可以看到以下帮助器属性:

  • 阿贾克斯
  • HTML
  • 网址

但没有任何一个名为Scripts.

有任何想法吗?

编辑:

我的Web.config文件看起来像这样(不受Visual Studio创建的那个):

  <system.web.webPages.razor>
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <pages pageBaseType="System.Web.Mvc.WebViewPage">
      <namespaces>
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
      </namespaces>
    </pages>
  </system.web.webPages.razor>
Run Code Online (Sandbox Code Playgroud)

编辑#2:

人们正在写关于使用@Scripts帮助者的博客:

然而,刚刚将Visual Studio 2012 RC安装到新的Windows 8安装上,@Scripts即使Visual Studio将其添加到生成的View中,我仍然无法使用!

解决方案如下.

我不知道如何关闭它,因为最终更新似乎解决了这个问题.我仔细检查了我使用新项目执行了干净安装.但是,我所做的同样失败的项目现在可以在各种更新后进行,并且没有人工明显的干预.感谢所有的想法,但当时肯定存在问题;)

asp.net-mvc razor

200
推荐指数
8
解决办法
18万
查看次数

_ViewStart.cshtml布局文件在何处以及如何链接?

这是默认MVC 3模板中的About.cshtml:

@{
    ViewBag.Title = "About Us";
}

<h2>About</h2>
<p>
     Put content here.
</p>
Run Code Online (Sandbox Code Playgroud)

我希望能找到对_ViewStart文件的引用About.cshtml,但显然不是.

我看着在global.asaxweb.config,但我不能找出如何将About.cshtml文件"链接"从_ViewStart文件的布局.

一切都按预期工作,我只想知道引擎盖下发生了什么......

.net asp.net-mvc razor asp.net-mvc-3

191
推荐指数
5
解决办法
12万
查看次数

如何将类属性添加到MVC的HTML Helpers生成的HTML元素中?

例如@Html.ActionLink(),ASP.NET MVC可以使用HTML Helpers生成HTML元素,@Html.BeginForm()依此类推.

我知道我可以通过创建一个匿名对象来指定表单属性,并将该对象传递给(在本例中为第四个)htmlAttributes参数,其中id为元素指定一个:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { id = "MyForm"})
Run Code Online (Sandbox Code Playgroud)

class属性怎么样?显然这不起作用:

Html.BeginForm("Foo", "Bar", FormMethod.Post, new { class = "myclass"})
Run Code Online (Sandbox Code Playgroud)

因为在请求我的视图时,它只会抛出随机语法错误,因为它在遇到C#关键字后需要其他东西class.

我也尝试过:

new { _class = "myclass"}
Run Code Online (Sandbox Code Playgroud)

new { class_ = "myclass"}
Run Code Online (Sandbox Code Playgroud)

但它们也没有用,因为下划线被短划线取代.

我知道我也可以手工编写HTML元素或将表单包装在一个内部<div class="myClass">,但我仍然有兴趣知道它应该如何完成.

asp.net-mvc html-helper razor

187
推荐指数
1
解决办法
13万
查看次数

如何通过MVC剃刀代码获取Enum成员的显示名称属性?

我的模型中有一个名为"Promotion"的属性,它的类型是一个名为"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
}
Run Code Online (Sandbox Code Playgroud)

现在我希望能够在我的视图中创建一个ul来显示我的"Promotion"属性的选定值.这是我到目前为止所做的,但问题是如何在这里获取显示名称?

<ul>
    @foreach (int aPromotion in @Enum.GetValues(typeof(UserPromotion)))
    {
        var currentPromotion = (int)Model.JobSeeker.Promotion;
        if ((currentPromotion & aPromotion) == aPromotion)
        {
        <li>Here I don't know how to get the display attribute of …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc displayattribute razor

185
推荐指数
12
解决办法
23万
查看次数

ASP.NET MVC 3 Razor - 为EditorFor添加类

我正在尝试为输入添加一个类.

这不起作用:

@Html.EditorFor(x => x.Created, new { @class = "date" })
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc razor asp.net-mvc-3

184
推荐指数
7
解决办法
20万
查看次数

如何在剃刀视图上引用.css文件?

我知道如何在_Layout.cshtml文件上设置.css文件,但是基于每个视图应用样式表呢?

我的想法是,在_Layout.cshtml中,你有<head>标签可以使用,但在你的一个非布局视图中却没有.哪里的<link>标签去?

css asp.net-mvc razor

180
推荐指数
3
解决办法
23万
查看次数

Razor View抛出"名称'模型'在当前上下文中不存在"

在我的MVC 4应用程序中进行了重大的重构之后,Razor在调试Views时显示了这个错误:

当前上下文中不存在名称"model".

这是令人讨厌的代码行:

@model ICollection<DataSourceByActive>
Run Code Online (Sandbox Code Playgroud)

我知道使用@model是正确的.

为什么会这样?我该如何解决?

asp.net-mvc razor asp.net-mvc-4

180
推荐指数
11
解决办法
15万
查看次数

从视图或部分视图添加CSS或JavaScript文件到布局头

布局页面头:

<head>
    <link href="@Url.Content("~/Content/themes/base/Site.css")"
          rel="stylesheet" type="text/css" />
</head>
Run Code Online (Sandbox Code Playgroud)

应用程序需要的View(AnotherView):

<link href="@Url.Content("~/Content/themes/base/AnotherPage.css")"
      rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

和AnotherView有一个局部视图(AnotherPartial)需要:

<link href="@Url.Content("~/Content/themes/base/AnotherPartial.css")"
      rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

问题:我们如何这些CSS文件链接添加到Layouthead和AnotherPartial链接到Layout头

RenderSection不是一个好主意,因为AnotherPage可以有多个Partials.添加所有CSS到头部是没用的,因为它将动态更改(它取决于Anotherpages).

asp.net-mvc razor asp.net-mvc-3

171
推荐指数
6
解决办法
22万
查看次数