在asp.net mvc 3 razor视图中正确设置<img/>标记的src路径

时间:2013-05-23 10:52:40

标签: asp.net-mvc-3 razor path

我在这个asp.net mvc 3项目上工作,到现在为止我们使用本地资源来模拟现实生活中的数据。现在由于项目的进展,所有资源(就这个问题而言都是图像)被移动到删除服务器上的目录。

所以直到现在我在剃刀视图中使用此代码才能在屏幕上显示图像:

<img src= "@Url.Content("~/Content/" + Model[i].FieldValue)" alt="Logo" />

现在我必须使用新目录,在我尝试更新代码时可以看到的路径,并使其与新设置保持一致

<img src= "@Url.Content("\\\\85.53.1.107\\East\\upload\\"+Model[i].FieldValue)" alt="Logo" />

所以实际地址是\\85.53.1.107\East\upload\。更改代码以继续显示图片的正确方法是什么?就像现在一样,我只看到没有它扩展名的图像名称。

1 个答案:

答案 0 :(得分:1)

我认为您应该使用网络服务器(如

)对网址进行http请求
"http://85.53.1.107/East/upload/"

我还会将此路径放在webconfig文件中,所以每次我必须使用图像时都不必重复此操作,可能使用自定义网址扩展,因此调用看起来像:

<img src="@Url.ImagePath(Model[i].FieldValue)" />

使用此扩展程序:

public static class UrlExtensions
{
  public static string ImagePath(this UrlHelper helper, string imageFileName)
  {
    return helper.Content(string.Format("{0}/{1}", ConfigurationManager.AppSettings["ImagesBasePath"],  imageFileName));
  }
}

和webconfig文件中的密钥:

<configuration>
    <appSettings>
        ...
        <add  key="ImagesBasePath" value="http://85.53.1.107/East/upload/" />
    </appSettings>
</configuration>

如果您的应用程序有权访问85.53.1.107服务器,您可以使用服务器名称设置密钥:

    <add  key="ImagesBasePath" value="\\NAME_OF_SERVER\East\upload\" />