我无法为@ Url.Content方法准备字符串网址。
这是我的Underscore模板代码块
<% 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)) %>" />
答案 0 :(得分:0)
您使用<% ... %>
评估Underscore模板中的某些JavaScript,但如果您希望输出结果在结果中,则使用<%= ... %>
;来自fine manual:
模板函数既可以使用
<%= … %>
插入变量,也可以使用<% … %>
执行任意JavaScript代码。
您希望将imgId
值插入到结果中,以便您想要:
<img src= "@Url.Content("+<%= imgId %>+")" alt="Assigned Details" />
简化演示:http://jsfiddle.net/ambiguous/9gyKC/
据推测,@Url.Content
是在服务器上运行以生成给定资源的src
属性的东西。如果是这种情况那么你将不得不重新考虑这是如何工作的;执行 <%= ... %>
后,浏览器中会发生@Url.Content
内容,因此在运行Underscore模板时为时已晚。您对imgId
错误的说明:
<img src= "<%= @Url.Content(string.Format("~/Content/Images/{0}", imgId)) %>" />
支持这一理论。您的服务器代码不知道imgId
是什么,只有客户端JavaScript才知道。
答案 1 :(得分:0)
<强>解决方案:强> 最后,我从另一个线程中找到了解决方案:Call js function from underscore template 1. js功能
<script type="text/javascript">
var fullPath = '@HttpContext.Current.Request.Url.Scheme://@HttpContext.Current.Request.Url.Authority';
function GetPath(url) {
return fullPath + url;
}
<img src= '<%= GetPath(imgId) %>' alt="Med Assigned" />