在asp.net mvc看来#是什么意思

时间:2018-09-23 09:59:57

标签: c# asp.net-mvc

在Asp.net mvc中,我使用.cshtml进行查看。我想知道在像这样的代码的两个哈希符号之间写线的含义

#if(actionName()!=null){ if(actionName()=='Start'){#

#和@

有什么区别

3 个答案:

答案 0 :(得分:1)

在两个#之间写一行没有内在的含义,因为您将其视为文本而不是C#/ Razor语法,所以示例中的这一行按原样编写。这不是因为#的用法,而是因为您没有将C#代码包含在任何有效的剃刀语法中。

您没有使用剃刀刀架:

    @
    {
      //Everything written inside the razor block is evaluated as C# code. You can 
      have multiple lines  inside this bock
    }

您没有使用嵌入式剃刀语句:

@//C# syntax 

您可以在其中编写在代码中得到评估的内联C#语法。通常,如果您写类似

@if(CONDITION)
{

}

@foreach(var x in COLLECTION)
{

}

您可以在封闭块旁边编写多条C#行,而无需定义更大的剃刀块。参见MSDN

因此,在示例中回答您的问题#与MVC / Razor / C#没有任何意义,因为它将在编写时在页面中以文本形式呈现。

#if(actionName()!=null){ if(actionName()=='Start'){#

这与@以外没有其他符号一样。所以如果你有

$if(actionName()!=null){ if(actionName()=='Start'){$

它将在最后一页中写为$if(actionName()!=null){ if(actionName()=='Start'){$文本。在最后一页中,第一个文字应为#if(actionName()!=null){ if(actionName()=='Start'){#文字。

现在,如果您拥有@if(actionName()!=null){ if(actionName()=='Start'){@,则由于@,它将被视为剃刀表达式,并且您将得到一个错误,因为那不是有效的剃刀表达式。

它与使用#或$之类的符号无关。您只是在写任何时候的文字(因为您实际上并没有使用@写一个剃刀表达式),因此任何内容都是有效的,并且将按原样呈现为文本。符号或没有符号。

答案 1 :(得分:0)

Ahmed,您可能会发现此链接有帮助: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/preprocessor-if

通过上面的链接...

#if以及#else,#elif,#endif,#define和#undef伪指令可让您基于一个或多个符号的存在来包含或排除代码。在为调试版本编译代码或为特定配置进行编译时,这很有用。

// C#
/#if DEBUG
    Console.WriteLine("Debug version");
#endif

答案 2 :(得分:-1)

如果在if条件或.cshtml中的文本之间添加#,例如

   1. #if(1!=2){ <p>True</p> }else{<p>False</p>}#
   2. #Hello#

它只会在UI(View)中呈现相同的文本。

如果为1,则如果在开头放置put @,它将成为cshtml中的有效if条件。

@if(1!=2){ <p>True</p> }else{<p>False</p>}      

在用于.cshtml的asp.net mvc(剃刀引擎)中,@字符启动内联表达式,单语句块和多语句块。请查看链接以获取更多详细信息。

https://docs.microsoft.com/en-us/aspnet/web-pages/overview/getting-started/introducing-razor-syntax-c

编辑:@Stephen这显然可行。

Contact.cshtml

@{
ViewBag.Title = "Contact";
}

@if (1 != 2){ <p>True</p> }else{<p>False</p>} 


#Hello#

#if(1!=2){ <p>True</p> }else{<p>False</p>}#