Dan*_*ick 5 c# asp.net-mvc razor google-cloud-datastore
我正在尝试运行数据存储区查询以获取名称和价格列表.但是,我不断收到此错误消息:
无法隐式将类型'
Google.Cloud.Datastore.V1.DatastoreQueryResults' 转换为'System.Collections.Generic.List<TestApp.Models.AllSportsStore>'
这是我正在使用的代码:
AllSportsStore.cs
public DatastoreDb _db;
[BindProperty]
public List<AllSportsStore> SportsStoreList { get; set; }
public void OnGet()
{
Environment.SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "xxxxx.json"));
_db = DatastoreDb.Create("projectid");
Query query = new Query("Sports_db");
IEnumerable<Entity> stores = _db.RunQuery(query).Entities;
SportsStoreList = stores.Select(_ => new AllSportsStore
{
Name = _["Name"].ToString(),
Price = _["Price"].ToString(),
}).ToList();
}
Run Code Online (Sandbox Code Playgroud)
AllSportsStore.cshtml页面
@for (var i = 0; i < Model.SportsStoreList.Count; i++)
{
<tr>
<td>
@Html.DisplayFor(model => model.SportsStoreList[i].Name)
</td>
<td>
@Html.DisplayFor(model => model.SportsStoreList[i].Price)
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
这是数据存储区的映像
正如评论中已经说明的那样,您正在尝试为SportsStoreList属性分配错误的类型.
有一个模型来存储实体细节
public class SportsStoreItem {
public string Name { get; set; }
public decimal Price { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在AllSportsStore.cs页面中使用该模型
public class AllSportsStore : PageModel {
private readonly DatastoreDb _db;
public AllSportsStore() {
_db = DatastoreDb.Create("projectid");
}
[BindProperty]
public List<SportsStoreItem> SportsStoreList { get; set; }
public IActionResult OnGet() {
Query query = new Query("Sports_db");
IEnumerable<Entity> stores = _db.RunQuery(query).Entities;
SportsStoreList = stores.Select(_ => new SportsStoreItem {
Name = (string)_["Name"],
Price = (decimal)_["Price"]
}).ToList();
return Page();
}
}
Run Code Online (Sandbox Code Playgroud)
请注意从数据存储db中检索的实体如何转换为强类型对象.
然后,您应该能够访问视图/页面中列表中的项目.
@for (var i = 0; i < Model.SportsStoreList.Count; i++) {
<tr>
<td>
@Html.DisplayFor(model => model.SportsStoreList[i].Name)
</td>
<td>
@Html.DisplayFor(model => model.SportsStoreList[i].Price)
</td>
</tr>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
455 次 |
| 最近记录: |