在锚标签中使用@ inside href

时间:2018-05-10 20:18:17

标签: asp.net-mvc href razorengine

我已经实施了一个简单的支付网关,支付网址中包含@,如下所示:

<a href="https://www.somegateway.com/@john_doe/" class="im-checkout-btn btn--light" target="_blank" rel="modal">Checkout With someGateway</a>

这是一个ASP.NET MVC Web应用程序,因此该视图是Razor视图引擎,并且它不接受href中的@,它给了我:

  

CS0103:当前上下文中不存在名称“john_doe”

但是当我只是创建一个html页面并使用上面的代码时它起作用,它只是在剃刀视图中不起作用。我哪里错了?

2 个答案:

答案 0 :(得分:2)

您需要使用@@代替在剃须刀中转义@字符。但是,尽管有文档,但这并不是在链接内部一直有效。

写这样的链接应该有效!

<a href="https://www.somegateway.com/@("@john_doe")/" class="im-checkout-btn btn--light" target="_blank" rel="modal">Checkout With someGateway</a>

或者

<a href="https://www.somegateway.com/@Html.Raw('@')john_doe/" class="im-checkout-btn btn--light" target="_blank" rel="modal">Checkout With someGateway</a>

如果一切都失败了,你可以做到

@{ var url = "https://www.somegateway.com/@john_doe/"; }

然后

<a href="@url" class="im-checkout-btn btn--light" target="_blank" rel="modal">Checkout With someGateway</a>

答案 1 :(得分:0)

您可以将url放在变量中,然后使用:

[1,2]>>=return 
[1,2] >>=return

甚至没有变量:

@{
    var url = "...";
}
<a href="@Html.Raw(url)">...</a>