我有一个有三个值的列表。我想在视图中显示。这是我的方法
My Controller Function
public List<Movie> Index()
{
Movie obj = new Movie();
return obj.ShowData();
}
我的模特班&amp;功能
Database db = DatabaseFactory.CreateDatabase("MyDBLINK");
public int ID { get; set; }
public string Title { get; set; }
public List<Movie> GetData()
{
try
{
DbCommand dbCommand = db.GetStoredProcCommand("SP");
DataSet dsResult = db.ExecuteDataSet(dbCommand);
List<Movie> Prop = new System.Collections.Generic.List<Movie>();
Prop = (from DataRow row in dsResult.Tables[0].Rows
select new Movie
{
ID = Convert.ToInt32(row["ID"].ToString()),
Title = row["Title"].ToString()
}).ToList();
return Prop;
}
catch (Exception ex)
{
return null;
}
}
这是我的观点
@model System.Collections.Generic.List<MvcFirst.Controllers.MoviesController>
@foreach (var item in Model)
{
<ul>
<li>@item.ID</li>
<li>@item.Title</li>
</ul>
}
我的问题是如何在View中显示此列表? 其次这种方法对CPU有用吗?
答案 0 :(得分:1)
一切看起来都很好,你的控制器应该是这样的:
public ActionResult Index()
{
var movie = new Movie();
var result = movie.GetData(); // instance object and read the method to get the list
return View(result);
}
ActionResult
可以是任何类型的结果,视图,要下载的文件,Javascript,样式表等等......但是,normaly是具有相同操作名称的视图。如果您的操作方法名为Index
,则asp.net mvc将在Index
文件夹中搜索名为Views
的视图。部分return View(result);
表示您要返回此视图,并将result
对象作为Model
传递给您的视图。
你的View
应该用实体输入(因为你是从控制器返回),而不是控制器:
@model System.Collections.Generic.List<Movie>
@foreach (var item in Model)
{
<ul>
<li>@item.ID</li>
<li>@item.Title</li>
</ul>
}
答案 1 :(得分:0)
我认为您错过了控制器和视图的工作方式。您的Index()方法需要返回一个ActionResult,它将生成您的视图并将其返回给用户。
//My Controller Function
public ActionResult Index()
{
Movie obj = new Movie();
return View(obj.GetData()); //This will take the view with the same name as your method (Index in this case) and return it to the client/browser.
}
我希望我能正确理解你的问题。
编辑:我忘了让Felipe Oriani向您展示的视频严格打字