【发布时间】:2021-04-19 15:49:22
【问题描述】:
我有一个使用 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)
.AllowColumnReordering(true)
.RowAlternationEnabled(true)
.ShowBorders(true)
.OnContentReady("contentReady")
.Paging(p => p.PageSize(10))
.Pager(p => p
.ShowPageSizeSelector(true)
.AllowedPageSizes(new[] { 10, 25, 50, 100 })
)
.SearchPanel(s => s
.Visible(true)
.HighlightCaseSensitive(true)
)
.GroupPanel(g => g.Visible(true))
.Grouping(g => g.AutoExpandAll(false))
.Columns(columns => {
columns.AddFor(m => m.FirstName);
columns.AddFor(m => m.LastName);
columns.AddFor(m => m.PhoneNumber);
columns.AddFor(m => m.OwnerId).CellTemplate(@<text> <a asp-action="UpdateOwner" asp-route-id="m => m.OwnerId"><img src="/icon/edit.png" /></a>);
})
)
以下是控制器文件中的相关代码 sn-p:
public class OwnerController : Controller
{
public async Task<IActionResult> UpdateOwner(Guid id)
{
Owner owner = new Owner();
try
{
var requestString = ServerAddress + $"Owners/GetRecordById{id.ToString()}";
var response = await client.GetAsync(requestString);
var responseString = await response.Content.ReadAsStringAsync();
owner = JsonConvert.DeserializeObject<Owner>(responseString);
}
catch (HttpRequestException ex)
{
Debug.WriteLine(ex.Message);
}
return View(owner);
}
}
我想在列定义中使用锚标记以使用 OwnerId 链接到另一个页面。 我尝试在列定义中使用 CellTemplate 来做到这一点:
columns.AddFor(m => m.OwnerId).CellTemplate(@<text> <a asp-action="UpdateOwner" asp-route-id="m => m.OwnerId"><img src="/icon/edit.png" /></a>);
目前,该链接触发控制器中的异步方法UpdateOwner(),但id参数为0。
如何在 CellTemplate 定义中为锚标签设置 asp-route-id?
【问题讨论】:
标签: c# asp.net-core razor devextreme