C# 表行中的asp路由未传递id
asp路由在标记中使用时,似乎没有正确地将Id发送到my View方法。id作为“null”传入。 当我将它与一个标记一起使用时,它工作得很好(除了它没有打开一个模态);但是,我希望整行都可以单击进行编辑 我试着检查外壳,确保它不是什么愚蠢的东西;但是,当将相同的代码粘贴到标记中时,它没有任何问题。当我在控制台中查看时,我可以看到asp路由id正在拉取正确的id。它命中控制器,并通过if(user==null),因为它以null的形式出现 HTML:C# 表行中的asp路由未传递id,c#,entity-framework,asp.net-core,razor,C#,Entity Framework,Asp.net Core,Razor,asp路由在标记中使用时,似乎没有正确地将Id发送到my View方法。id作为“null”传入。 当我将它与一个标记一起使用时,它工作得很好(除了它没有打开一个模态);但是,我希望整行都可以单击进行编辑 我试着检查外壳,确保它不是什么愚蠢的东西;但是,当将相同的代码粘贴到标记中时,它没有任何问题。当我在控制台中查看时,我可以看到asp路由id正在拉取正确的id。它命中控制器,并通过if(user==null),因为它以null的形式出现 HTML: @型号PortalDev.Models.A
@型号PortalDev.Models.ApplicationUser
@Model.Id
@Model.UserName
@型号.电子邮件>
@Model.PhoneNumber
@模范城市
编辑
控制器:
[HttpGet]
公共异步任务EditUser(字符串id)
{
var user=await userManager.FindByIdAsync(id);
if(user==null)
{
ViewBag.ErrorMessage=$“找不到Id={Id}的用户”;
返回视图(“未找到”);
}
var userClaims=await userManager.GetClaimsAsync(用户);
var userRoles=await userManager.GetRolesAsync(用户);
var模型=新的EditUserViewModel
{
Id=user.Id,
Email=user.Email,
UserName=user.UserName,
城市=用户。城市,
Claims=userClaims.Select(c=>c.Value).ToList(),
角色=用户角色
};
返回PartialView(“~/Views/Modals/\u EditUserModalPartial.cshtml”,model);
}
预期的行为是单击表行,它会显示一个模式,其中包含EditUserViewModel将
数据url=“@url.Action(“EditUser”)”
替换为数据url=“@url.Action(“EditUser”,new{Id=Model.Id})”。这将生成正确的Url。是Id
实际上是字符串(而不是int
)?如果您将方法更改为EditUser([FromRoute]string id)
?@crgolden是的,它实际上是一个字符串,它类似于GUID,但有一种字符串类型。唯一有效的方法是我在前端做一个标签。我尝试过的其他方法都不起作用(包括[FromRoute])。