【发布时间】:2021-11-22 21:44:54
【问题描述】:
咖啡店是使用 ASP.NET Core Razor 页面创建的。咖啡模型已创建,所有可用的咖啡都存储在数据库(ef 核心)中。 我们有两页。第一页显示了所有咖啡(id、title、cost、...)信息的表格。每杯咖啡都有一个编辑“按钮”。
<tbody>
@foreach (var item in Model._coffeeItems)
{....
<td>
@item.Price €
</td>
<td>
<a asp-action= "GetCoffeeItem" >Edit</a>
<a asp-action="RemoveCoffeeItem" >Delete</a>
</td> ...
单击时应重定向到带有表单的编辑页面。所有字段都必须填写咖啡信息,以便于编辑。
在第一页 CoffeeItemProvider.cs:
public async Task<FoodItem> GetCoffeeItem(int id)
{
var item = await _db.CoffeeItems
.FirstOrDefaultAsync(i => i.Id == id);
return item;
}
public async Task UpdateCoffeeItem(int id, CoffeeItem item)
{
_db.CoffeeItems.Update(item);
await _db.SaveChangesAsync();
}
在编辑页面中:
<form asp-action="UpdateCoffeeItem">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="Id" />
<div class="form-group">
<label asp-for="Name" class="control-label"></label>
<input asp-for="Name" class="form-control" value = ""/>
<span asp-validation-for="Name" class="text-danger"></span>
</div>
如何填写输入 f.ex。值 = "@item.Name" 的名称?
有什么方法可以让 GetCoffeeItem 在单击时从首页项目中获取 id - 调用 GetCoffeeItem- 获取项目 - 然后重定向到 /Edit 页面,并分配值 = "@item.Smth"?
【问题讨论】:
-
Razor 页面中没有控制器或操作。你确定你没有使用 MVC?
-
@MikeBrind,更正它是一项服务
-
@MariaHussey “这是一项服务”是什么意思?如果您指的是网络服务,那么您为什么要使用 Razor/cshtml?
标签: c# asp.net razor-pages