C# 如何使用带有斜杠的Html.ActionLink而不是问号生成URL
我正在尝试用正斜杠生成URL,如下所示C# 如何使用带有斜杠的Html.ActionLink而不是问号生成URL,c#,razor,routing,asp.net-mvc-5,C#,Razor,Routing,Asp.net Mvc 5,我正在尝试用正斜杠生成URL,如下所示 @Html.ActionLink("Details", "Details", new { id = item.StudentID, name = item.FirstName }) 所需结果: http://www.example.com/Students/Details/3/ttcg http://www.example.com/Students/Details/4/john http://www.example.com/Students/Detai
@Html.ActionLink("Details", "Details", new { id = item.StudentID, name = item.FirstName })
所需结果:
http://www.example.com/Students/Details/3/ttcg
http://www.example.com/Students/Details/4/john
http://www.example.com/Students/Details/5/ronaldo
http://www.example.com/Students/Details/3?name=ttcg
当前结果:
http://www.example.com/Students/Details/3/ttcg
http://www.example.com/Students/Details/4/john
http://www.example.com/Students/Details/5/ronaldo
http://www.example.com/Students/Details/3?name=ttcg
使用RouteAttribute的控制器操作
[Route("Students/Details/{id}/{name?}")]
public ActionResult Details(int? id, string name)
{
if (id.HasValue == false)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Student student = _studentService.GetDetail(id.Value);
if (student == null)
{
return HttpNotFound();
}
student.FirstName += name;
return View(student);
}
目前,我使用此代码作弊以获得所需的结果
<a href="Students/Details/@item.StudentID/@item.FirstName" >Details</a>
有没有更好的方法来生成我想要的url
根据这篇文章,我是否必须在RouteConfig文件中添加新路由?这是否意味着RouteAttribute不支持这种URL生成?在RouteConfig.cs中启用属性路由
routes.MapMvcAttributeRoutes();
添加此选项后,您将获得所需的结果。在RouteConfig.cs中启用属性路由
<a href="Students/Details/@item.StudentID/@item.FirstName" >Details</a>
routes.MapMvcAttributeRoutes();
添加此选项后,您将获得所需的结果。在更改RouteConfig.cs后不起作用?我尚未更改RouteConfig.cs。但我想在做之前确定一下。由于我已经在使用RouteAttribute,我不想在RouteConfig.cs中再次声明它。您可以更改routes.MapRoute并重试,无论它是否工作。更改RouteConfig.cs后是否工作?我尚未更改RouteConfig.cs。但我想在做之前确定一下。因为我已经在使用RouteAttribute,所以我不想在RouteConfig.cs中再次声明它。您可以更改routes.MapRoute并重试,无论它是否工作。
<a href="Students/Details/@item.StudentID/@item.FirstName" >Details</a>