【发布时间】:2016-07-20 09:41:35
【问题描述】:
我正在尝试使用静态数据填充 Web 网格视图,但我没有任何运气。
我总是得到错误:
"A data source must be bound before this operation can be performed".
我通过设置断点了解错误的来源。基本上,当页面加载完毕时,代码永远不会访问 Account() 函数。因为它不这样做,所以 allFiles 永远不会被初始化和返回。
最好的方法是从视图中调用 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")
})
【问题讨论】:
-
allFiles.Add(file); ?这条线是你错过的吗?
-
我已经尝试过使用和不使用它。即使它是一个空列表,它在技术上也不应该给你一个错误。那不应该是问题。问题是永远不会返回帐户操作结果。不知道为什么
-
尝试 IList 或 IEnumerable 而不是 List...只是猜测。像 List
allFiles 一样使它成为 IEnumerable allFiles -
不,我也尝试过,但没有运气。我只是发现它确实在加载页面时不会进入帐户功能
标签: c# asp.net-mvc asp.net-mvc-4 webgrid