Razor和aspx之间的关系

时间:2011-02-26 11:46:52

标签: asp.net asp.net-mvc razor

抱歉,我认为Razor中的错误不是由Razor引擎引起的。


有几个类似的问题,但我仍然感到困惑。以下面的代码为例:

<% Html.RenderAction("partial"); %>

@{Html.RenderAction("partial");}

aspx页面运行良好,但Razor抛出一个错误:“路由表中没有路由匹配提供的值。”即使这也是错误的。

Html.RenderAction("partial");

为什么?什么是“@”真的意味着什么? aspx和cshtml之间有什么区别或关系?

3 个答案:

答案 0 :(得分:0)

Introducing Razor应该能够回答您关于"@"和Razor的问题。

答案 1 :(得分:0)

嗯,让我们从@符号的含义开始,这用于告诉视图你将要使用razor视图引擎语法,例如......

@Html.something

您也可以在块中使用c#,例如......

@{ 
 string something = "value";
//you can later use that variable anywhere in the page

}

使用razor在mvc中渲染局部视图时,它将如下所示

@Html.Partial("Folder Name/Partial View Name")

无需使用;

结束剃刀代码

Razor非常聪明,可以判断你什么时候回到html

部分视图位于文件夹Views下的文件夹。您始终可以将部分视图放在共享文件夹中,而不必指定文件夹名称,默认情况下我会检查它,我很确定。

将局部视图视为用户控件。您可以创建仅包含链接的部分视图,或者您可以创建强类型的部分视图,该视图需要将模型发送到包含视图以呈现部分视图,否则您将收到错误。

如果您有任何其他问题需要我知道,我希望这会有所帮助。

答案 2 :(得分:0)

@符号告诉剃刀视图引擎您将在该点插入一些C#代码。你可以用两种方式做到这一点

内联

@Html.TextBox("LastName", Model.LastName)

注意没有;,不需要

代码块

@{
     ViewBag.FirstName = "Bob";
}

代码块中的所有代码都是标准C#,每个语句必须以“;”结尾。

HTML和Razor的混合

<div class="label">
   @Html.LabelFor(model => model.FirstName)
</div>

剃刀解析器可以找出C#和HTML代码的开始和结束位置。