动态选取目录文件夹

时间:2017-07-19 18:17:15

标签: c# asp.net-mvc umbraco7

我需要用特定的docType属性值替换硬编码文件夹名称,这是我的部分视图页面代码,

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage

@{
    string folderPath = Server.MapPath("/media");
    string[] files = Directory.GetFiles(folderPath + "/1039");
}
@foreach (string item in files){
     <img src="/media/1039/@Path.GetFileName(item)" />
}  

我尝试了以下内容,但我认为它遗漏了一些东西,

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
    string folderPath = Server.MapPath("/media");
    string[] files = Directory.GetFiles(folderPath + "/@Model.Content.GetPropertyValue("placeID")");
}
@foreach (string item in files){
    <img src="/media/@Model.Content.GetPropertyValue("placeID")/@Path.GetFileName(item)" />
} 

1 个答案:

答案 0 :(得分:0)

由(@MrMarsRed)解决,这是正确的代码, 他的回答如下,

你没有按照这个字符串做你期望的事情:

"/@Model.Content.GetPropertyValue("placeID")"

由于你在C#代码块中的字符串内部,所以@Model没有特殊含义(即,它实际上是以这种方式解释的,而不是被评估为表达式)。你想要这样的东西:

string[] files = Directory.GetFiles(folderPath + "/" + Model.Content.GetPropertyValue("placeID"));

这是最终的代码,完美无缺

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
    @{
        string folderPath = Server.MapPath("/media");
        string[] files = Directory.GetFiles(folderPath + "/" + Model.Content.GetPropertyValue("placeID"));
    }
    @foreach (string item in files){
        <img src="/media/@Model.Content.GetPropertyValue("placeID")/@Path.GetFileName(item)" />
    }