【问题标题】:mvc-4 generate list in viewmvc-4 在视图中生成列表
【发布时间】:2013-06-03 20:19:14
【问题描述】:

让我的视图正确生成有一点问题。

我收到错误:模型不包含“GetEnumerator”的公共定义

我试图将我的通用列表更改为 IEnumerable 列表,但它在我无法摆脱的代码中弹出了更多错误,我不确定是否必须以某种方式将其添加到我的 UploadedFile 类中?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mvc_fileUploader.Models
{
    public class UploadedFile
    {
        public string Name { get; set; }
        public string Path { get; set; }

        public long Size { get; set; }

    }
}

控制器:

[HttpGet]
        public ActionResult UploadedFiles()
        {
            var uploadedFiles = new List<UploadedFile>();

            var files = Directory.GetFiles(Server.MapPath("~/fileUploads/"));

            foreach (var file in files)
            {
                var fileInfo = new FileInfo(file);

                var uploadedFile = new UploadedFile();

                uploadedFile.Name = Path.GetFileName(file);
                uploadedFile.Size = fileInfo.Length;
                uploadedFile.Path = ("~/fileUploads/") + Path.GetFileName(file);

                uploadedFiles.Add(uploadedFile);
            }

            return View();

查看:

@model Mvc_fileUploader.Models.UploadedFile

@{
    ViewBag.Title = "UploadedFiles";
}

<h2>UploadedFiles</h2>

<table style="background-color:lightpink; border:solid 2px black;">
    <tr>
        <td>Name</td>
        <td>Size</td>
        <td>Preview</td>
    </tr>

    @foreach (var file in Model)
    {
        <tr>
            <td>@file.Name</td>
        </tr>       
    }

</table>

github上的源码:https://github.com/xoxotw/mvc_fileUploader

【问题讨论】:

  • 你的get方法在哪里??

标签: asp.net-mvc list view


【解决方案1】:

需要设置视图的模型为

IEnumerable<Mvc_fileUploader.Models.UploadedFile>

[编辑]

您没有退回模型。在您的控制器操作中;将您创建的列表添加到 View() 调用中,例如:

[HttpGet]
        public ActionResult UploadedFiles()
        {
            var uploadedFiles = new List<UploadedFile>();

            var files = Directory.GetFiles(Server.MapPath("~/fileUploads/"));

            // do stuff

            return View(uploadedFiles);

【讨论】:

  • 酷,让我更近了一步。它现在中断:第 16 行:@foreach(模型中的 var 文件)对象引用未设置为对象的实例。模型包含空值。我不知道如何解决它..?
  • 太好了,终于成功了,当我看到它时,我认为控制器中的所有内容都会自动返回。
  • 返回的唯一默认值是要使用的视图的名称,这也可以用View("usethis") 的覆盖之一覆盖。返回数据而不将其传递给 View() 的另一种方法是将其添加到 ViewBag 并从视图本身访问它。
【解决方案2】:
@model Mvc_fileUploader.Models.UploadedFile

当只有一个模型被传递给视图时使用它。如果你想传递模型列表,那么你必须像下面这样写。

IEnumerable<Mvc_fileUploader.Models.UploadedFile>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多