2012-02-23 62 views
1

我被告知(由一个我现在无法联系的人来提出这个问题)在调试过程中使用查询字符串技巧来避免缓存样式表。受访者表示,这将这样的伎俩:“@ {some expression;}是什么意思?

@{ var currentDate = DateTime.Now; } 
<link href="@Url.Content("~/Styles/Site.css?" + currentDate)" rel="stylesheet" type="text/css" /> 

我明白为什么,但表达@ {VAR的currentdate = DateTime.Now;}只是解决字面值在页面当我运行它的全部。代码是:

<head runat="server"> 
    <title></title> 
    @{ var currentDate = DateTime.Now; } 
    <link href="@Url.Content("~/Styles/Site.css?" + currentDate)" rel="stylesheet" type="text/css" /> 

    <asp:ContentPlaceHolder ID="HeadContent" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 

的语法“@ {}”是新的给我,我没有看到提到它在我看过的任何文档。根据使用情况,它似乎是内联脚本,但它在运行时不被视为,我甚至不确定它是否是Active Server Page语法(或PHP?)。

是什么工作是:

<% var currentDate = DateTime.Now; %> 
<link href="~/Styles/Site.css?<%= currentDate%>" rel="stylesheet" type="text/css" /> 

OK了,不过,什么是 “@ {<一些表达>}” 意味着什么?

回答

3

这是Razor,这是一个新的asp.net渲染引擎。它和你的<%%>代码块完全相同。

1

它不是一个表达式,它是Razor syntax中的代码块(一个或多个声明和语句的集合)。

1

它不适合你的原因是你没有使用剃须刀引擎。 @通过实现Razor引擎替代了asp.net中<% %>的需求,最显着的是通过mvc3。