小编Por*_*man的帖子

如何在剃刀中使用三元运算符(特别是在HTML属性上)?

使用WebForms视图引擎,我通常会使用三元运算符来处理非常简单的条件,特别是在HTML属性中.例如:

<a class="<%=User.Identity.IsAuthenticated ? "auth" : "anon" %>">My link here</a>
Run Code Online (Sandbox Code Playgroud)

上面的代码将为<a>标记提供一个类authanon取决于用户是否经过身份验证.

Razor视图引擎的等效语法是什么?因为Razor需要HTML标签来"知道"何时跳入和跳出代码和标记,所以我现在仍然坚持以下内容:

@if(User.Identity.IsAuthenticated)  { <a class="auth">My link here</a> }
else { <a class="anon">My link here</a> }
Run Code Online (Sandbox Code Playgroud)

温和地说,这很可怕.

我很想做一些喜欢这一点,但我在努力了解如何在剃刀:

<a class="@=User.Identity.IsAuthenticated ? "auth" : "anon";">My link here</a>
Run Code Online (Sandbox Code Playgroud)

-

更新:

与此同时,我创建了这个HtmlHelper:

public static MvcHtmlString Conditional(this HtmlHelper html, Boolean condition, String ifTrue, String ifFalse)
{
  return MvcHtmlString.Create(condition ? ifTrue : ifFalse);
}
Run Code Online (Sandbox Code Playgroud)

这可以从Razor这样调用:

<a class="@Html.Conditional(User.Identity.IsAuthenticated, "auth", "anon")">My link here</a>
Run Code Online (Sandbox Code Playgroud)

尽管如此,我希望有一种方法可以使用三元运算符而不会退回到扩展方法中.

razor asp.net-mvc-3

387
推荐指数
5
解决办法
16万
查看次数

什么是Windows的优秀grep工具?

有关Windows的grep工具的任何建议?理想情况下可以利用64位操作系统.

我当然知道Cygwin,并且也找到了PowerGREP,但我想知道那里是否有隐藏的宝石?

windows grep

290
推荐指数
17
解决办法
49万
查看次数

我如何解决JavaScript的parseInt八进制行为?

尝试在JavaScript中执行以下操作:

parseInt('01'); //equals 1
parseInt('02'); //equals 2
parseInt('03'); //equals 3
parseInt('04'); //equals 4
parseInt('05'); //equals 5
parseInt('06'); //equals 6
parseInt('07'); //equals 7
parseInt('08'); //equals 0 !!
parseInt('09'); //equals 0 !!
Run Code Online (Sandbox Code Playgroud)

我刚刚学会了JavaScript认为前导零指示八进制整数的困难方式,并且由于没有"8""9"在base-8中,该函数返回零.无论喜欢与否,这都是设计的.

解决方法有哪些?

注意:为了完整起见,我即将发布解决方案,但这是我讨厌的解决方案,所以请发布其他/更好的答案.


更新:

JavaScript标准的第5版(ECMA-262)引入了一个突破性的变化,消除了这种行为.Mozilla 写得很好.

javascript integer octal

280
推荐指数
8
解决办法
6万
查看次数

正确使用_viewstart.cshtml和部分Razor视图的方法?

我正在使用_viewstart.cshtml自动为我的视图分配相同的Razor布局.

它是我的Views文件夹根目录中的一个死的简单文件,如下所示:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

这比将@Layout指令添加到每个视图更干.

但是,这对Razor 局部视图造成了问题,因为它们运行_viewstart.cshtml的内容,因此错误地为自己分配了一个布局,这使得它们不再是局部的.

这是一个假设项目,显示_viewstart.cshtml文件,共享_layout.shtml文件和部分视图("AnonBar.cshtml").

示例项目结构

目前,我解决这个问题的方法是在每个局部视图中添加以下行:

@{
    Layout = "";
}
Run Code Online (Sandbox Code Playgroud)

这似乎是在Razor中将视图表示为部分视图的错误方式.(请注意,与Web窗体视图引擎不同,部分视图的文件扩展名相同.)

我考虑的其他选项,但更糟糕的是:

  • 将所有部分视图放入公共文件夹,这样他们就可以共享一个共同的_viewstart.cshtml.这会破坏与其控制器位于同一文件夹中的视图约定.
  • 不使用部分视图.

这是Razor视图引擎团队仍在充实的东西,还是我错过了一个基本概念?

razor asp.net-mvc-3

155
推荐指数
1
解决办法
6万
查看次数

1999年10月12日有什么意义?

System.Web.Security.FormsAuthentication的SignOut方法中,ASP.NET团队选择通过将到期日期设置为"1999年10月12日"来使FormsAuth cookie过期.

HttpCookie cookie = new HttpCookie(FormsCookieName, str);
cookie.HttpOnly = true;
cookie.Path = _FormsCookiePath;
cookie.Expires = new DateTime(0x7cf, 10, 12);
Run Code Online (Sandbox Code Playgroud)

1999年10月12日有什么意义?这是一个内幕笑话,还是有一些有效的理由将你的cookie过期设置到该特定日期?

编辑: 下面的理论很有趣,但它们只是猜测.由于Phil, Scott和ASP.NET团队的其他成员都在StackOverflow上,我认为提供赏金会很有趣.希望有人可以追踪原始开发人员并获得权威答案.

获奖者: Scott Hanselman将这一个升级到ScottGu.我真的希望有某种超级秘密的Illuminati-esque意思,但看起来它只是旧的"一年前"的伎俩.

.net asp.net cookies

93
推荐指数
6
解决办法
1万
查看次数

在SQL Server中设置日期

在SQL Server中,如何将DATETIME"置于"第二/分钟/小时/日/年?

假设我的日期是2008-09-17 12:56:53.430,那么地板的输出应该是:

  • 年:2008-01-01 00:00:00.000
  • 月:2008-09-01 00:00:00.000
  • 日:2008-09-17 00:00:00.000
  • 时间:2008-09-17 12:00:00.000
  • 会议纪要:2008-09-17 12:56:00.000
  • 第二名:2008-09-17 12:56:53.000

t-sql sql-server

69
推荐指数
4
解决办法
6万
查看次数

无法在IIS 7.5上运行ASP.NET MVC 2 Web应用程序

我试图在Windows 7上的IIS下运行ASP.NET MVC 2 Web应用程序,但是我收到403.14错误.以下是重现的步骤:

  1. 打开Visual Studio 2010
  2. 创建一个名为MvcApplication1的新ASP.NET MVC 2项目
  3. Shift + F5运行应用程序.您应该看到http://localhost:{random_port}/并且页面将正确呈现.
  4. 单击MvcApplication1,然后选择"属性".转到"Web"部分.
  5. 选择"使用本地IIS Web服务器"并创建虚拟目录.
  6. 保存.
  7. Shift + F5运行应用程序.您应该看到http://localhost/MvcApplication1/和IIS错误HTTP Error 403.14 - Forbidden The Web server is configured to not list the contents of this directory..

很明显,无论出于何种原因,ASP.NET路由都无法正常工作.

我已经想过并尝试过的事情:

  • 验证在"打开或关闭Windows功能"中启用了所有IIS功能.
  • 验证默认网站配置为使用.NET 4.0
  • 通过重新分配ASP.NET V4 scripmaps aspnet_regiis -iv4.0.30319目录中.

这是最神奇的部分 - 这是在一台刚刚建造的机器上.Windows 7 x64 Ultimate的新副本,Visual Studio 2010 Premium的全新安装,没有其他网站,也没有执行其他工作.

还有什么我可以尝试的吗?

将Visual Studio设置为使用本地IIS Web服务器http://i41.tinypic.com/11j176b.png

iis visual-studio-2010 visual-studio iis-7.5 asp.net-mvc-2

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

我在哪里可以获得带有结构化数据的英语词典?

我想以结构化格式(如TXT,XML或SQL)下载英语词典 - 而不仅仅是单词列表.

具体来说,我需要语音发音词性(不需要定义).

令人惊讶的是,我无法在任何地方找到这个.维基词典可供下载,但它本身只是MediaWiki文章.抓取所有文章并提取语音和词性将是一项巨大的练习.

这有可用吗?我不介意付钱.

编辑:有几个人问过我想做什么.我的迫切需要只是好奇心,例如"最常见的双音节动词是什么?".最终,我的希望是一个可以帮助您找到可用域名的工具,并通过配对正确的词性,以及语音匹配的奖励积分来实现.

注意:交叉发布英语语言和用法.

resources open-source phonetics

36
推荐指数
4
解决办法
2万
查看次数

数据库的CPU利用率?

是否有可能按数据库分类CPU利用率?

我理想地为SQL服务器寻找任务管理器类型接口,但我不想查看每个PID(如taskmgr)或每个SPID(如spwho2k5)的CPU利用率,而是想查看每个数据库的总CPU利用率.假设一个SQL实例.

我意识到可以编写工具来收集这些数据并对其进行报告,但我想知道是否有任何工具可以让我看到哪些数据库对sqlservr.exeCPU负载贡献最大的实时视图.

sql-server monitoring

30
推荐指数
3
解决办法
6万
查看次数

Linq to SQL:如何在没有分组的情况下聚合?

我正在搜索与此查询等效的Linq-to-SQL:

SELECT
  [cnt]=COUNT(*),
  [colB]=SUM(colB),
  [colC]=SUM(colC),
  [colD]=SUM(colD)
FROM myTable
Run Code Online (Sandbox Code Playgroud)

这是一个没有分组的聚合.我似乎无法找到任何方法,只发出四个单独的查询(一个Count和三个Sum).有任何想法吗?

linq-to-sql

30
推荐指数
2
解决办法
1万
查看次数