在mvc 4中将字符串转换为数组

时间:2014-04-03 05:17:24

标签: asp.net-mvc-4

在我最近的 mvc 4 项目中,我将多个图像和其他文件(例如doc,pdf,ppt等)作为字符串存储在我的数据库中。现在我想显示这个多个图像,并希望显示其他文件的链接。

例如,我将数据作为字符串存储在我的数据库中,如下所示:

 1980082_10201802177236118_516383197_o.jpg, ASP.NET MVC Interview Questions & Answers.pdf, Sample-1.jpg,

现在我想获取此字符串并显示图像并提供其他文件的链接。

3 个答案:

答案 0 :(得分:0)

我希望它会有所帮助。首先,当你保存在数据库中时,你必须确保用所有路径保存它,而不仅仅是文件名。简单地在你的行动中:

 public FilePathResult GetDoc(int yourParam)
    {
       var  path= (from r in yourContext.yourTable where id == yourParam
                  select r.path).FirstOrDefault()
        //Considering that your path contains also the folder


            return new FilePathResult(path);


    }

在您的视图中:        <img src="@Url.Action("GetDoc", "YourController", new { yourParam=Model.yourParam}) " /> @*For a link*@ <a href="@Url.Action("GetDoc", "YourController", new { yourParam=Model.yourParam}) ">@Model.TheNameOfYourFile <a/>

答案 1 :(得分:0)

首先请注意,将文件名存储在db中的一行中并不是一个好主意。如果我理解你正确,要从该行中提取图像和文件,请创建一个包含不同文件列表列表的模型:

public class RowResult
{
  public RowResult()
  {
     Images = new List<string>();
     Pdfs = new List<string>();
  }

  public List<string> Images { get; set; }
  public List<string> Pdfs { get; set; }  

  //you can add other file types here
}

创建一个返回每行结果的方法:

public RowResult ExtractFilesFromRow(string row)
{
    RowResult result = new RowResult();
    string[] parts = row.Split(' ');
    foreach (string part in parts)
    {
        if (part.TrimEnd(',').EndsWith(".jpeg")) result.Images.Add(part);
        if (part.TrimEnd(',').EndsWith(".pdf")) result.Pdfs.Add(part);
        //add others here..
    }
    return result;
}

最后,要在每行中显示它们,您可以在db中获取RowResult并填充List<RowResult>。在行动:

....
List<RowResult> list = new List<RowResult>();
foreach (string row in rows)
{
   list.Add(ExtractFilesFromRow(row));
}
...
return list;

在视图中:

@foreach (string result in Model)
{
  //here depends on you want
  <img src="@Url.Content("~/Uploads/Images/" + result.Images[0])" />
  ....
  <img src="@Url.Content("~/Uploads/Images/" + result.Images[1])" />
}

答案 2 :(得分:0)

  
    

我将多个图像和其他文件(例如doc,pdf,ppt等)作为字符串存储在我的数据库中

  

我认为您的意思是将文件名保存为数据库中的字符串。

现在让我们从您共享的数据库数据开始

  
    

例如,我将数据作为字符串存储在我的数据库中,如下所示:     1980082_10201802177236118_516383197_o.jpg,ASP.NET MVC访谈问题&amp; amp; Answers.pdf,Sample-1.jpg,

  

当逗号分隔成为此

  • 1980082_10201802177236118_516383197_o.jpg
  • ASP.NET MVC访谈问题&amp; Answers.pdf
  • 采样1.JPG

现在我们这里只有文件名和“ 物理路径 ”来存储这些文件。

为此,您必须将文件路径保存在数据库中。除非你已经定义了一个路径说“C:/ SomeApp / MyDump /”,你只是在这里转储所有文件。

如果您是,那么您可以使用该路径将其附加文件名并在UI上显示。文件扩展名可以帮助您决定使用哪种HTML(<img><a>来显示图片或显示下载链接)