1

I have been reading and reading , and I can't seem to get this to work at all. I am very very new to asp.net MVC - after all the tutorials I read I finally got this much accomplished.

public class EventsController : Controller
{
    private EventsDBDataContext db = new EventsDBDataContext();
    public ActionResult Index()
    {
        var a = (from x in db.tblEvents
                 where x.StartDate >= DateTime.Now
                 select x).Take(20).ToList();
        return View(a);
    }
}

This is successfully finding 20 rows (like it is supposed to). Now how do I display these in the view ?? Does it have to be a strongly typed view?? It doesn't seem like it should have to be... I have tried both , I tried typing a whole view, but for now it would be nice to just get one property of tblEvents to show up in the view. This is not working, I have tried many many variations.

@{foreach( var item in Model){

      @Html.DisplayFor( item.ID)

  }
}

How do I get the results from the controller displayed in the view? Just the ID is good for now - I can go from there.

4

3 回答 3

1

问题是您的视图不知道您的模型是什么类型。使用 @model 语法来定义模型的类型。

@model List<YourEventClass>

@foreach( var item in Model )
{
   @item.ID<br />
}

有关更多信息,请参见此处

于 2012-12-02T00:56:35.367 回答
0

我想你不能做这样的事情:

@{foreach( var item in Model){
   @Html.DisplayFor(modelItem => item.ID)
 }

除非视图知道返回的类型模型是什么(.Net 自己无法解决这个问题似乎仍然很奇怪。所以我解决了问题并通过将其添加到视图中正确显示了 ID。

@model IEnumerable<GetEvents.Models.tblEvent>

这适用于这个例子 - 我返回一个 table ,所以 Model 类型只是 table 的类。但这似乎不对 - 如果我想查询和连接表,那么模型类型会是什么?添加这个解决了我的问题,但如果有人对此有更好的答案,那么我会接受。

于 2012-12-02T00:43:38.300 回答
0

从 Web 项目的根目录,您应该有一个名为Views. 在 views 文件夹中创建一个名为Events. 在Events文件夹中创建一个名为Index. 将您的标记和模板代码放在此文件中。

你是对的,视图不需要是强类型的。我发现这样做是个好主意,因为它提供了另一个编译时检查,但这不是必需的。

当您运行应用程序时,您将从根目录(通常是 home/index)导航到 Events/Index。在那里,您应该会看到视图中呈现的 20 个项目的列表。

于 2012-12-02T00:27:51.560 回答