在ASP.NET視圖,如下圖所示,我收到的特定錯誤排隊<input asp-for="StateName" />
錯誤: 'List<GrantsViewModel>' does not contain a definition for 'StateName'
輸入標記助手問題ASP.NET
注意:查看假設在HTML表格列中顯示不同的狀態名稱。
控制器:
public class DbTestController : Controller
{
private MyProjContext _context;
public DbTestController(MyProjContext context)
{
_context = context;
}
public IActionResult GrantNumbers()
{
var qryVM = from s in _context.StateNames
join g in _context.AnnualGrants on s.StateNumber equals g.StateNumber into sg
from r in sg.DefaultIfEmpty()
select new GrantsViewModel() { StateNumber = s.StateNumber,StateName= s.State, GrantNo= (r == null ? String.Empty : r.GrantNo), FiscalYear = (r == null ? 1900 : r.FiscalYear) };
return View(qryVM.ToList());
}
}
視圖模型:
public class GrantsViewModel
{
public int GrantNo_Id { get; set; }
public string StateNumber { get; set; }
public string StateName { get; set; }
public string GrantNo { get; set; }
public int FiscalYear { get; set; }
}
查看:
@model List<MyProjet.Models.GrantsViewModel>
<form asp-controller="DbTest" asp-action="GrantNumbers" asp-route-returnurl="@ViewData["ReturnUrl"]" method="post">
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(model => model.First().StateName)
</th>
<th>
@Html.DisplayNameFor(model => model.First().GrantNo)
</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>
<input asp-for="StateName" />
</td>
<td>
@Html.DisplayFor(modelItem => item.GrantNo)
</td>
<td></td>
</tr>
}
</tbody>
</table>
<button type="submit" class="btn btn-default">Save</button>
</form>
你爲什麼要使用ASP的助手在剃刀,如果你使用.NET MVC的工作? – Jecoms
您有一個表單,但是您正在從數據庫加載信息。如果你只想顯示信息,那麼你不應該有一個表格。如果你想通過表單收集新的數據,那麼你的表單應該與載入的數據分開。 – Jecoms
@Jecoms 1.我試圖使用新的MVC6功能[HTML標籤助手](https://docs.asp.net/en/latest/mvc/views/tag-helpers/intro.html),特別是[輸入標籤助手](http://www.davepaquette.com/archive/2015/05/13/mvc6-input-tag-helper-deep-dive.aspx)2.這是一個應用程序,客戶希望與預加載的數據(HttpGet),並讓用戶能夠修改該數據(因此輸入標籤),然後保存數據(因此將表單發回HttpPost)。 – nam