我正在尝试使用静态数据填充网格视图,但我没有运气。
我总是得到错误:
"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")
})
答案 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"),
})
这将有效