MVC 4 WebGrid C#错误

时间:2016-03-31 19:15:54

标签: c# asp.net-mvc asp.net-mvc-4 webgrid

我正在尝试使用静态数据填充网格视图,但我没有运气。

我总是得到错误:

"A data source must be bound before this operation can be performed". 

我通过设置断点了解错误的来源。基本上,当页面加载时,代码永远不会访问Account()函数。由于它不会这样做,所以从不初始化并返回allFiles。

最好的方法是从View调用Action()并初始化所有文件吗?我已经阅读了有关同一错误的其他问题,但没有人强调代码没有访问控制器功能的事实。

这是控制器:

    public ActionResult Account()
    {
        FileModel file = new FileModel();
        List<FileModel> allFiles = new List<FileModel>();
        file.FileID = "1";
        file.UserID = "1";
        var data = allFiles;
        return View(data);
    }

这是模型

   public class FileModel
{
    public string FileID { get; set; }
    public string UserID { get; set; }
    public string FileName { get; set; }
    public string AddedOn { get; set; }
    public int Downloads { get; set; }
    public int Show { get; set; }
}

这是视图

    @model IEnumerable<GridTest1.Models.FileModel>
    @{
       ViewBag.Title = "Files";
       WebGrid grid = new WebGrid(Model);
    }
    <h2>People</h2>
    @grid.GetHtml(columns: new [] {
         grid.Column("FileID"),
         grid.Column("UserID")
    })

1 个答案:

答案 0 :(得分:0)

您的控制器编码顺序错误。请检查以下代码

    public ActionResult Account()
    {
        // Assign a value to class
        FileModel file = new FileModel();
        file.FileID = "1";
        file.UserID = "1";
        file.FileName = "Text.txt";
        file.AddedOn = "AddedOn";

        // Create instance for all file
        List<FileModel> allFiles = new List<FileModel>();

        // Add file model to list
        allFiles.Add(file);

        // Pass the file list to view
        return View(allFiles);
    }

查看

@model List<GridTest1.Models.FileModel>

@{
    ViewBag.Title = "Files";
    WebGrid grid = new WebGrid(Model);
}

@grid.GetHtml(columns: new[] {
         grid.Column("FileID"),
         grid.Column("UserID"),
         grid.Column("FileName"),
         grid.Column("AddedOn"),
    })

这将有效