2016-08-02 70 views
0

在我创建的网站中,我试图将上传图像的URL存储到我的模型中,然后在视图中调用它。所以当我输入HTML源文件路径时,它工作正常。Razor .cshtml视图文件中的图像文件路径

<dd><img src="~/uploads/image.jpg" alt="ASP.NET" style="width:350px;height:260px" /> 
    </dd> 

但是,如果我尝试从模型调用,URL会搞砸。

@string imagePath = "~/uploads/" + Model.Picture; 

<dd><img [email protected] alt="ASP.NET" style="width:350px;height:260px" /> 
    </dd> 

该代码链接到“http://localhost:60847/Controller/Details/~/uploads/image.jpg”。有人可以向我解释为什么它的工作方式不同吗?谢谢。

回答

1

您缺少src属性值的引号。还请确保使用Url.Content辅助方法来获取正确的路径。您可以将"~"传递给此方法以获取到您的应用程序根目录的正确路径。

@{ string imagePath = Url.Content("~/uploads/" + Model.Picture); }; 
<img src="@imagePath" alt="ASP.NET" style="width:350px;height:260px" /> 

或者即使没有变

<img src="@Url.Content("~/uploads/" + Model.Picture)" /> 
+0

的好帮手Url.Content固定的,单一的衬垫,谢谢。我尝试过使用和不使用src属性值的引号,并且都使用了Url.Content助手。 –

+0

你应该使用引号。如果你的'Model.Picture'值有一个空格呢?如果您没有引号,您的代码将会中断。 – Shyju

+0

好的,即使它是一个字符串数据类型,Razor也不会自动加入引号。 –