不明白为什么我在尝试在 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
.
我试图从我的 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 而我在 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
.