我在我的EmployeeController像ASP.NET MVC不能得到列出的數據從景觀到控制器
public ActionResult approvalList()
{
int sessionUser = Convert.ToInt32(Session["LogedUserID"]);
var listForApproval = db.TblExpenseItem.Where(k => k.UserID.Equals(sessionUser));
return View(listForApproval.ToList());
}
我加入模板「列表」和模型類視圖「tableFromMyDB」。(我把一個動作@使用(Html.BeginForm)並自己提交按鈕。)
@model IEnumerable<ExpenseApplication.Models.TblExpenseItem>
@{
ViewBag.Title = "approvalList";
}
<h2>approvalList</h2>
<p>
@Html.ActionLink("Create New Expense", "ExpenseReport", "Employee")
</p>
@using (Html.BeginForm("approvalList", "Employee", FormMethod.Post))
{
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.ExpenseDate)
</th>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
<th>
@Html.DisplayNameFor(model => model.Amount)
</th>
<th>
@Html.DisplayNameFor(model => model.isSended)
</th>
<th>
@Html.DisplayNameFor(model => model.isRejected)
</th>
<th>
@Html.DisplayNameFor(model => model.TblCategory.CtgName)
</th>
<th>
@Html.DisplayNameFor(model => model.TblUsers.UserName)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
if (item.isSended == false)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.ExpenseDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.Amount)
</td>
<td>
@Html.DisplayFor(modelItem => item.isSended)
</td>
<td>
@Html.DisplayFor(modelItem => item.isRejected)
</td>
<td>
@Html.DisplayFor(modelItem => item.TblCategory.CtgName)
</td>
<td>
@Html.DisplayFor(modelItem => item.TblUsers.UserName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ExpItemID }) |
@Html.ActionLink("Details", "Details", new { id = item.ExpItemID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ExpItemID })
</td>
</tr>
}
}
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<th>Total Amount:</th>
<td>
@Model.Sum(x => x.Amount)
</td>
</tr>
</table>
<div class="col-md-offset-8 col-md-12">
<input type="submit" value="Send List To Manager" class="btn btn-default" />
</div>
}
httppost在我的控制器中的操作。
[HttpPost]
public ActionResult approvalList(List<TblExpenseItem> expItemList)
{
foreach (TblExpenseItem item in expItemList)
{
do stuff..
}
int sessionUser = Convert.ToInt32(Session["LogedUserID"]);
expItemList = db.TblExpenseItem.Where(k => k.UserID.Equals(sessionUser)).ToList();
return View(expItemList);
}
當我點擊提交按鈕時,它在expItemList上拋出nullReferenceException。
我做了我的搜索,並找到了一些解決方案。但他們都關於創建,編輯等。
我只想列出來看看我的表中有什麼,然後提交它。之後,我會得到一些數據與foreach來自expItemList。
順便說一句我是新來的MVC,這是我的第一個問題,所以我很抱歉,如果我犯了什麼錯誤。
如果用戶未編輯或添加到該列表,爲什麼要提交表單?您當前的代碼只是在屏幕上打印值。沒有輸入表單元素! – Shyju
我會改變一些值,如isSended,isRejected用戶提交後,我會用新的值更新表。 –
你在哪裏改變?用戶是否在UI中更改它?那麼你需要輸入表單元素(你現在沒有這些元素)。如果它在服務器代碼中,我建議再次從Db中讀取它(與您在GET操作中讀取的方式相同)並根據需要進行更新。 – Shyju