为什么视图模型为null

本文关键字:null 模型 视图 为什么 | 更新日期: 2023-09-27 17:58:29

我有以下结构:

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的新手,所以如果我在结构中有任何逻辑错误,请毫不犹豫地警告我:)

为什么视图模型为null

首先,您需要设置逻辑以从模型中访问数据库。您可以使用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>

您需要在控制器中创建一个模型以传递给View()

public ActionResult PageMain(string param)
{
    return View(new PageMain());
}

发生这种情况是因为我忘记了表单字段的"name"属性。哦!