抱歉,我认为Razor中的错误不是由Razor引擎引起的。
有几个类似的问题,但我仍然感到困惑。以下面的代码为例:
<% Html.RenderAction("partial"); %>
@{Html.RenderAction("partial");}
aspx页面运行良好,但Razor抛出一个错误:“路由表中没有路由匹配提供的值。”即使这也是错误的。
Html.RenderAction("partial");
为什么?什么是“@”真的意味着什么? aspx和cshtml之间有什么区别或关系?
答案 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代码的开始和结束位置。