[asp.net-mvc]为什么根象征不工作在超链接中,当表达式返回的吗?

发布时间: 2017/3/25 0:52:07
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

只是一个想法来铭记。 第一这两个标记在 asp.net 无法正常工作的原因吗?

对我来说都是其最后的值是相同的字符串值。这是属性 href 超链接的价值。

请让我了解它。

<a href="@(string.Format("~/Test/Index"))">Test</a>
<a href="~/Test/Index">Test</a>

注︰ 我看不到它的解决方案。只想要了解什么是逻辑上这两个案件之间的区别。

解决方法 1:

对我来说都是其最后的值是相同的字符串值

没有。首先考虑如果你只是一个普通的非Razor HTML 表单如是否你已经硬编码路径的开始︰

<a href="/SomeProject/Test/Index">Test</a>

现在,在这里"/ SomeProject,测试,指标"不是一个字符串。它是在 HTML 中的属性值。HTML 有没有"字符串"的概念。当然它碰巧使用相同的分隔符,因为 C# 是为字符串,但这并不是 C# 在这里。

用Razor我们有几种手段来表示我们想要把剃须刀给原本平淡的 HTML 来做的。

@是其中一人的说明我们想要计算的 C# 表达式的结果 (如果不是 void) 输出。结果 (string.Format("~/Test/Index"))~/Test/Index ,就是输出。

~/在某些上下文中,是另一个,它应该被替换的评估值,该值指示 Href("~/")Url.Content("~/") ,这可能会像 //SomeProject/ 或别的什么。它不是这么多一个字符串作为这样一个关键字更多的东西。

如果你有表达式返回一个字符串,你仍然可以使用同样与字符串︰

<a href="@Href(string.Format("~/Test/Index"))">Test</a>

顺便说一下,是这样可在Razor 1.0 中的唯一途径。直接解析的 "~/… 作为一种方便添加,确实方便。

官方微信
官方QQ群
31647020