在下划线.js模板中连接 @Url.内容 的字符串

Concatenate string for @Url.Content with in the Underscore.js template

本文关键字:@Url 内容 字符串 连接 下划线 js      更新时间:2023-09-26

我无法为 @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)) %>" />

解决方案:最后我从另一个线程中找出了解决方案:从下划线模板调用 js 函数1.js功能

<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" />

您可以使用<% ... %>来评估下划线模板中的某些 JavaScript,但如果您希望输出最终出现在结果中,请使用<%= ... %>; 来自精细手册:

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

您希望将imgId值内插到结果中,因此您需要以下内容:

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

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

据推测,@Url.Content是在服务器上运行以生成给定资源的src属性的东西。如果是这种情况,那么您将不得不重新考虑它是如何工作的;<%= ... %>执行@Url.Content内容发生在浏览器中,因此当下划线模板运行时为时已晚。您关于imgId错误的注释:

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

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