我正在使用ASP.NET 5.在我的本地计算机上,我使用http://localhost
但在我的服务器上部署
到http://server/MyApp
我的_Layout.cshtml
<link href="~/lib/jquery-ui/base/core.css" rel="stylesheet" />
在没有“〜”的情况下渲染
<link href="/lib/jquery-ui/base/core.css" rel="stylesheet" />
然后在我通过HTML帮助生成的另一个地方输出
@Html.MyCustomHtmlButton(model=>model.Id)
string output="<a href=\""+ "~/area1/folder2/index" +"\">";
output += ".." + "</a>";
return new HtmlString(output.ToString());
然而,这会使用“〜”
呈现为html<a href="~/area1/folder1/index" class="btn btn-sm btn-primary">
<i class="glyphicon glyphicon-remove-circle"></i>Cancel</a>
如果你点击它,你将被重定向到
http://localhost:59693/area1/controller11/edit/~/area1/controller1/index
因为在html中呈现了“〜”。
如何修复它以便将“〜”呈现给正确的根,以便http://localhost
和http://server/MyApp
都有效?
答案 0 :(得分:3)
这样的Tildes仅在视图中用作纯文本时才起作用。通过自己构建HtmlString
,您可以绕过该URI的Razor,因此波形符的解析不会起作用。
只需使用@Url.Action()
来构建URI。
答案 1 :(得分:1)
您可以使用Ur.Action()
方法,如下所示
string output="<a href=\""+Url.Action("index", "controller1", new {area="area1"})+"\">";
<强>更新强>
如果您在类库中使用它,那么只需使用
string output="<a href=\""+"/area1/controller1/index"+"\">";