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