在MVC中以视图显示列表

时间:2014-04-16 10:58:53

标签: asp.net-mvc list razor

我有一个有三个值的列表。我想在视图中显示。这是我的方法

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有用吗?

2 个答案:

答案 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向您展示的视频严格打字