[英]ASP.Net MVC: Building a gridview in the view from the result of a LINQ query in the controller
我已經看到許多聲稱可以解決此問題的示例,但沒有一個說明 controller 和視圖位於 2 個不同的位置。 這對我自己來說是令人困惑的,我懷疑其他一些 ASP 新手。
注意:我不是來自網絡表單。 我從未使用過網絡表單,也不打算使用。 請仔細閱讀問題。
@model IEnumerable<CovidAppV5.ViewModel.COVIDvm>
@{
ViewBag.Title = "Index";
}
<meta name="viewport" content="width=device-width" />
<h2>Report</h2>
<asp:GridView ID="GridView1" AutoGenerateColumns="true" runat="server">
</asp:GridView>
public ActionResult Index(string Name, string Phone1)
{
//System.Diagnostics.Debug.WriteLine(Phone1);
List<COVIDvm> VMlist = new List<COVIDvm>(); // to hold list of forms
var covidQuery = (from form in db.Case_Log
where form.Name == Name
join eForm in db.Emergency_Leave on form.Name equals eForm.Name
select new {form.Name, form.Phone1, eForm.OrgNumber, eForm.UnableToTelework, eForm.CaringForMinor}).ToList();
GridView.DataSource = covidQuery; //covidQuery is already a list
GridView.Databind();
foreach (var item in covidQuery)
{
COVIDvm objcvm = new COVIDvm(); // ViewModel
objcvm.Name = item.Name;
objcvm.Phone1 = item.Phone1;
objcvm.OrgNumber = item.OrgNumber;
objcvm.UnableToTelework = item.UnableToTelework;
objcvm.CaringForMinor = item.CaringForMinor;
VMlist.Add(objcvm);
}
return View(VMlist);
}
在 controller 你可以忽略 VMList 的東西; 那是為了顯示一個現在可以工作的表格,但我不想在 gridview 工作后使用。
我的問題是 controller 中的這些行不起作用:
GridView.DataSource = covidQuery; //covidQuery is already a list
GridView.Databind();
導致 GridView 出現此錯誤:
和數據源的這個錯誤:
但我不確定如何讓 covidQuery 進入視圖以執行此操作。 我可以像這樣傳遞 covidQuery:
return View(covidQuery);
但是,我如何在視圖中訪問它?
如果有其他方法可以做到這一點,那一定要告訴我。
我想使用 gridview 的原因是因為根據查詢的結果,某些列不是必需的,因此網格需要生成可變數量的列。
我認為您來自 asp.net 網絡表單開發人員。
在 asp.net mvc 中,您不能將 gridview 用作網絡表單,在 MVC 中,您需要使用 Table tr td 格式並在您的情況下通過 @Model 中的每個項目創建循環。
喜歡
<table>
<thead>
<th>Name </th>
<th>Phone1</th>
</thead>
<tbody>
@foreach(var itm in Model)
{
<tr>
<td>@itm.Name</td>
<td>@itm.Phone1</td>
</tr>
}
<tbody>
</table>
而且 MVC 也不是緊密耦合的,您需要使用 javascript 或任何其他客戶端腳本語言與 controller 進行通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.