0

我无法为 @Url.Content 方法准备字符串 url。

这是我来自下划线模板的代码块

 <%  var imgId = "~/Content/images/" +pocket.get('imageId'); %>   
        <div class="image1">       
            <% alert(imgId); %>         
            <img src= "@Url.Content("+<% imgId %>+")"  alt="Assigned Details" />

我将通过口袋对象传递“imageId”。

我也尝试使用以下方法。获取 imgId 变量的编译错误

<img src= "<%= @Url.Content(string.Format("~/Content/Images/{0}", imgId)) %>" />

4

2 回答 2

0

您用于<% ... %>在 Underscore 模板中评估一些 JavaScript,但<%= ... %>如果您希望输出以结果结束,则使用;来自精美手册

模板函数既可以使用 插入变量,也可以使用<%= … %>执行任意 JavaScript 代码<% … %>

您希望将imgId值插入结果中,因此您需要:

<img src= "@Url.Content("+<%= imgId %>+")"  alt="Assigned Details" />

简化演示:http: //jsfiddle.net/ambiguous/9gyKC/

大概@Url.Content是在服务器上运行以生成src给定资源的属性的东西。如果是这种情况,那么您将不得不重新考虑它是如何工作的;这些东西在执行<%= ... %>发生在浏览器中,所以当下划线模板运行时为时已晚。您对此错误的说明: @Url.ContentimgId

<img src= "<%= @Url.Content(string.Format("~/Content/Images/{0}", imgId)) %>" />

支持这个理论。您的服务器代码不知道是什么imgId,只有客户端 JavaScript 知道。

于 2012-05-08T01:44:30.800 回答
0

解决方案: 最后我从另一个线程中找到了解决方案:Call js function from underscore template 1. js function

<script type="text/javascript">
var fullPath = '@HttpContext.Current.Request.Url.Scheme://@HttpContext.Current.Request.Url.Authority';
function GetPath(url) {
    return fullPath + url;
}

  1. 从您的代码中调用 js:<img src= '<%= GetPath(imgId) %>' alt="Med Assigned" />
于 2012-05-16T01:35:28.670 回答