ASP.NET MVC内联标签与<link href>无法正常工作

3
每次我在链接的href属性上放置内联标签时,它总是被自动编码。这是ASP.NET的默认行为吗?如何使用代码动态设置Href属性?顺便说一下,这是在MVC中进行的。
尝试了类似以下的内容:
<link href="<%: Link.Content.Jquery_css %>" rel="stylesheet" type="text/css" />

这将导致此处未发生任何更改。

<link href="<%: Link.Content.Jquery_css %>" rel="stylesheet" type="text/css" />

并且这个

<link href="<%= Link.Content.Jquery_css %> rel="stylesheet" type="text/css" />

这产生了这个结果(我记不清确切的数字,但似乎括号百分号等号被编码为链接格式)。

<link href="/View/Shared%25Link.Content.Jquery_css%25" %>" rel="stylesheet" type="text/css" />

Link.Content.Jquery_css 是一个强类型字符串,它包含使用 T4MVC 创建的链接。

附加信息:我使用的是 .NET 4 中的 ASP.NET MVC 2,并在 Firefox 浏览器中进行测试。


当您执行Response.Write(Link.Content.Jquery_css)时,Link.Content.Jquery_css是什么样子?它在进入视图之前被编码了吗? - Chase Florell
似乎是这样的。我只是有些困惑,因为我在同一个主页面上对于Javascript引用使用了相同的Link.Content类 <script src=<%= Link.Content.Jquery_js%> /> ,而它按预期工作。 - Jonn
你需要追溯到该元素的创建。你能展示一些代码,无论是从模型还是控制器中,展示Jquery_css是如何被创建的吗? - Chase Florell
如果我没记错的话,这是一个静态只读字符串。目前我没有源代码。如果后续仍然无法解决问题,我会发布更多详细信息。 - Jonn
5个回答

6

我在主页面遇到了相同的问题。(在单独的页面中不会出现。)我发现从head标签中删除“runat = server”可以解决这个问题。


+1,我的问题与WebForms有关,但是删除runat="server"确实解决了OP遇到的确切问题(代码未被解释)。 - davidsleeps

4

由于您使用的标签 (<%: %>),它会自动进行编码。如果您不想对URL进行编码,请使用以下方法:

<link href="<%= Link.Content.Jquery_css %>" rel="stylesheet" type="text/css" />

我忘了说我已经尝试过了。我编辑了我的问题以澄清它。 - Jonn

3

将“:”改为“=”,这样就可以去除自动编码。


1

您的视图无法访问Link.Content.Jquery_css属性。ASP.NET不会抛出任何错误,这并没有帮助。

将该行移动到页面主体内,您将看到编译错误。


1
你可以这样做:
<head>
    <style type="text/css">
        @import "<%= ResolveUrl("~/content/styles.css") %>";
        @import "<%= ResolveUrl("~/content/print.css") %>" print;
    </style>
</head>

太酷了!我应该早就想到这个!以上所有的想法都不起作用。更不用说runat="server"在这里(MVC)根本没有关联。谢谢! - justabuzz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接