我有以下结构:
Controller.cs
public ActionResult PageMain(string param)
{
return View();
}
PageMain.cs
namespace project1.Models
{
public class PageMain
{
public DataTable dtable
{
get {
// some code that returns a DataTable
}
}
}
}
最后在视图中:
@using project1.Models
@model PageMain
var datatable = Model.dtable // but this is throwing an error since the model is null
有谁知道为什么我的模型返回null?如何访问PageMain.cs中的数据表?我是MVC的新手,所以如果我在结构中有任何逻辑错误,请不要犹豫警告我:)
答案 0 :(得分:12)
首先,您需要设置逻辑以从模型到达数据库。您可以使用ORM来实现这一目标。
然后,将模型传递给控制器进行查看。假设您的人员模型如下:
public class Person {
public string Name {get;set;}
public string SurName {get;set;}
public int Age {get;set;}
}
要查看特定的Person
数据,您需要查询模型并将此模型从您的控制器传递到您的视图:
public ActionResult Index() {
var _entities = new MyDataEntity();
var model = _entities.Person;
model = model.Where(x => x.Age > 20);
return View(model);
}
上述控制器正在将人员列表传递给您的视图。 MyDataEntity
类是您的实体框架DataContext
类。
之后,您需要将@model IEnumerable<Person>
放入模型中。这是一个例子:
@model IEnumerable<MyApp.Models.Person>
<ul>
@foreach(var item in Model){
<li>Name : @item.Name</li>
<li>Surname : @item.Surname</li>
<li>Age : @item.Age</li>
}
</ul>
答案 1 :(得分:6)
您需要在控制器中创建一个模型,以传递给View()
。
答案 2 :(得分:3)
public ActionResult PageMain(string param)
{
return View(new PageMain());
}
答案 3 :(得分:0)
这件事发生在我身上,因为我忘记了表单字段的“name”属性。 D'OH!