[英]ASP.NET MVC2 Application showing Error in View
控制器 -
namespace TaskList.Controllers
{
public class HomeController : Controller
{
//
// GET: /Home/
private TaskListDataContext DB = new TaskListDataContext();
//Task tasks = new Task();
//Display a list of Tasks
public ActionResult Index()
{
var tasks = from t in DB.Tasks
orderby t.EntryDate descending
select new TaskList.Models.Task()
{
Id = t.Id,
Task1 = t.Task1,
IsCompleted = t.IsCompleted,
EntryDate = t.EntryDate
};
return View(tasks);
}
//Display a form for creating a new Task
public ActionResult Create()
{
return View();
}
//Adding a new task to the database
public ActionResult CreateNew(string tasktext)
{
//Add the new task to the database
Task newTask = new Task();
newTask.Task1 = tasktext;
newTask.IsCompleted = false;
newTask.EntryDate = DateTime.Now;
DB.Tasks.InsertOnSubmit(newTask);
DB.SubmitChanges();
return RedirectToAction("Index");
}
//Mark a task as complete
public ActionResult Complete()
{
//Database Logic
return RedirectToAction("Index");
}
}
}
視圖:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<IEnumerable<TaskList.Models.Task>>"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<div>
<h1>My Tasks</h1>
<ul>
<% foreach (TaskList.Models.Task task in ViewData.Model)
{%>
<li>
<% task.Task1.ToString(); %>
</li>
<% } %>
</ul>
<br /> <br />
<a href='<%=Url.Action("Create")%>/filename'>Add my Tasks</a>
</div>
</body>
</html>
模型是使用Linq Class-
[global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.Tasks")]
public partial class Task : INotifyPropertyChanging, INotifyPropertyChanged
{
private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
private int _Id;
private string _Task1;
private bool _IsCompleted;
private System.DateTime _EntryDate;
}
當我嘗試運行該應用程序時,顯示給我一個錯誤
“不允許在查詢中顯式構造實體類型'TaskList.Models.Task'。”
在foreach循環中。
實際上,我正在嘗試在此處創建用VB內置的Application的C#版本。
http://www.asp.net/mvc/videos/mvc-2/how-do-i/creating-a-tasklist-application-with-aspnet-mvc
您可能需要轉換為類似的列表,
var tasks = (from t in DB.Tasks orderby t.EntryDate descending select new TaskList.Models.Task() { Id = t.Id, Task1 = t.Task1, IsCompleted = t.IsCompleted, EntryDate = t.EntryDate }).ToList();
如錯誤消息所示,您不能在查詢語句中創建映射的實體。 您可以選擇現有實體:
var tasks = from t in DB.Tasks
orderby t.EntryDate descending
select t;
,或在查詢之外創建新實體列表:
var taskEntities = from t in DB.Tasks
orderby t.EntryDate descending
select t;
var tasks = new List<TaskList.Models.Task>();
foreach(var taskEntity in taskEntities)
{
tasks.Add(new TaskList.Models.Task()
{
Id = taskEntity.Id,
Task1 = taskEntity.Task1,
IsCompleted = taskEntity.IsCompleted,
EntryDate = taskEntity.EntryDate
});
}
return View(tasks);
,具體取決於您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.