【发布时间】:2021-04-19 16:22:25
【问题描述】:
我有一个使用 C# 编写的 EFC 构建的 Asp.NetCore Web 应用程序。这些网页是使用 Razor 构建的。我正在尝试在页面中使用 DevExpress DevExtreme DataGrid。
这是我的模型类定义:
public class Owner
{
[Key]
public Guid OwnerId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string PhoneNumber { get; set; }
}
这是我的页面定义:
@model IEnumerable<Owner>
@{ Layout = "_DevExtremeLayout"; ViewBag.Title = "All Owners";}
@(Html.DevExtreme().DataGrid<SmartTracPoc.Models.Owner>()
.DataSource(Model)
.RemoteOperations(true)
.Columns(columns => {
columns.AddFor(m => m.FirstName);
columns.AddFor(m => m.LastName);
columns.AddFor(m => m.PhoneNumber);
columns.AddFor(m => m.OwnerId).CellTemplate(@<text><form asp-action="DeleteOwner" method="post">
<input type="hidden" value="m => m.OwnerId" name="OwnerId" />
<input type="image" src="/icon/close.png" />
</form>
</text>);
})
)
以下是控制器文件中的相关代码 sn-p:
public class OwnerController : Controller
{
[HttpPost]
public async Task<IActionResult> DeleteOwner(Guid ownerId)
{
try
{
var requestString = SmartTrocPocServerAddress + $"Owners/{ownerId.ToString()}";
var response = await client.DeleteAsync(requestString);
var responseString = await response.Content.ReadAsStringAsync();
}
catch (HttpRequestException ex)
{
Debug.WriteLine("OwnerController::DeleteOwner() - exception occured");
Debug.WriteLine(ex.Message);
}
return RedirectToAction("Index");
}
}
我想在列定义中使用 asp-action 来触发控制器中关联的 Delete 方法。控制器中的 DeleteOwner() 方法已成功触发,但我的 id 参数为 0。
在使用 DevExtreme DataGrid 之前,以下页面定义 sn-p 工作正常:
@foreach (var r in Model)
{
<table>
<tbody>
<tr>
<td>
<form asp-action="DeleteOwner" method="post">
<input type="hidden" value="@r.OwnerId" name="OwnerId" />
<input type="image" src="/icon/close.png" />
</form>
</td>
</tr>
</tbody>
</table>
}
如何将 OwnerId 绑定到对我的控制器方法调用的调用?
【问题讨论】:
标签: c# asp.net-core razor devextreme