不明白为什么我在尝试在 MVC 中填充 table 时得到空异常

Dont understand why im getting a Null Exception when trying to fill table in MVC

我试图从我的 HomeController 将数据插入到主视图的 table 中,但它返回了一个空异常,我不知道为什么。

我的控制器:

 public ActionResult FillTable()
    {
        var MyState = new State();

        var StateValues1 = new State();
        StateValues1.DayTableDates = "monday";
        StateValues1.DayTableValues = "15";
        MyState.TableValuess.Add(StateValues1);

        return View(MyState);
    }

我的看法:

 @{
        var StateValues1 = Model.TableValuess.FirstOrDefault(); 
    }

    <table class="greyGridTable">

        <thead>
            <tr>
                <th>Date</th>
                <th>Value</th>

            </tr>

        </thead>

        <tr>
            <td>@StateValues1.DayTableDates</td>
            <td>@StateValues1.DayTableValues</td>
        </tr>

    </table>

我的模特:

 public class State
{

    public List<State> TableValuess = new List<State>();

    public string DayTableDates { get; set; }
    public string DayTableValues { get; set; }


}

我的索引方法:Index method 我对 MVC 还很陌生,但在我看来这应该可行。请原谅变量名,我已经弄乱它​​很长一段时间了。 感谢帮助
编辑:我认为这个错误与我的视图被称为 Index 而我在 HomeController 中的操作方法被称为 FillTable() 有关。我的控制器中的索引方法已经包含代码。我将如何调用我的 FillTable 方法或将我的代码添加到 Index 方法?

在您的视图中,您必须指定要使用的 Model。试一试:

@model myProjectnamespace.Models.State

<table class="greyGridTable">
        <thead>
            <tr>
                <th>Date</th>
                <th>Value</th>   
            </tr>   
        </thead>    
        <tr>
            <td>Model.DayTableDates</td>
            <td>Model.DayTableValues</td>
        </tr>
</table>

问题似乎是 class,请试试这个:

public class State
{
    public State()
    {
          TableValuess = new List<State>();
    }
    public List<State> TableValuess { get; set; }

    public string DayTableDates { get; set; }
    public string DayTableValues { get; set; }    

}

从调试 window 看来,您打开了 /Home/Index,它调用了 HomeController 中的操作方法 Index()

但是,填充对象的操作方法被称为FillTable(),运行你应该调用URL那个方法/Home/FillTable.

请注意,如果这是您想要的,那么您还需要确保您有一个名为 FillTable.cshtml 的相应视图,您可以创建 FillTable () 使用 View("Index", MyState).

调用默认视图

或...

您还可以将所有代码从 FillTable() 操作方法移动到您的 Index() 操作方法中。

或...

更改FillTable()return MyState;结尾(也更改方法return类型)。然后在 Index() 方法中执行 var MyState = FillTable();,这样您就可以在那里使用 MyState。然后你可以继续使用 /Home/Index.