不明白为什么尝试在MVC中填写表格时即时通讯收到Null异常

时间:2018-09-27 13:06:47

标签: c# asp.net asp.net-mvc-5

我正在尝试从HomeController将数据插入到主视图中的表中,并且返回空异常,我无法弄清原因。

我的控制器:

 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; }


}

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

3 个答案:

答案 0 :(得分:1)

在调试窗口中,您好像打开了/Home/Index,它在HomeController中调用了操作方法Index()

但是,填充对象的操作方法称为FillTable(),要运行该方法,您应该调用URL /Home/FillTable

请注意,如果这是您想要的,则还需要确保您有一个名为FillTable.cshtml的对应视图,您必须让FillTable()调用默认值使用View("Index", MyState)查看。

或...

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

或...

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

答案 1 :(得分:0)

在视图上,您​​必须指定将使用的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>

答案 2 :(得分:0)

问题似乎是州立课程,请尝试以下方法:

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; }    

}