首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.Net Core不重定向到匹配操作

.Net Core不重定向到匹配操作
EN

Stack Overflow用户
提问于 2020-05-19 19:38:33
回答 1查看 239关注 0票数 0

我正在研究.Net核心mvc项目,其中一个操作需要获得三个参数,所以我首先在Startup.cs中创建了一个新的路径

代码语言:javascript
复制
app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "partner_detail",
                    pattern: "Partners/Detail/{id}/{name}/{location}");

                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}/{title?}");
            });

然后有一个用户可以单击特定合作伙伴的表,它将调用partnercontroller

代码语言:javascript
复制
@Html.ActionLink(Model.Partner.Name, "Detail", "Partners", new { id = Model.Partner.Id, name = Model.Partner.Name, location = Model.Location }, new { @class = "anchor-1" })

我的行动方法如下,

代码语言:javascript
复制
[AllowAnonymous]
public IActionResult Detail(Guid id, string name, string location)
{
    string friendlyName = FriendlyUrlExtension.GetFriendlyTitle(name);
    string friendlyLocation = FriendlyUrlExtension.GetFriendlyTitle(location);

    if (!string.Equals(friendlyName, name, StringComparison.Ordinal) || !string.Equals(friendlyLocation, location, StringComparison.Ordinal))
    {
        return this.RedirectToRoutePermanent("partner_detail", new { id = id, name = friendlyName, location = friendlyLocation });
    }

    return View();
}

我正在将名称和位置转换为SEO友好名称,并将其重定向到上述路线,

Url在格式化后是

https://myhost:00001/Partners/Detail/571ee251-b342-4fd3-b3df-0471ed54078e/partner-1/location-7

我有两个问题要问你们这些专家

  1. 当我使用锚标记调用操作时,它在查询字符串中传递路由值,有没有方法将它们作为路由参数传递?
  2. 为什么RedirectToRoutePermanent没有击中我的行动?

有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-05-20 04:38:26

好吧,我修好了。我使用了.net核心锚标记助手,如下所示,

代码语言:javascript
复制
<a controller="Partners" asp-action="Detail" asp-route-id="@Model.Partner.Id" 
asp-route-name="@Model.Partner.Name" asp-route-location="@Model.Location">@Model.Partner.Name</a>

并从startup.cs中删除路由并作为属性添加到控制器操作中。

代码语言:javascript
复制
[Route("Partners/Detail/{id}/{name}/{location}", Name = "partner_detail")]

任何使用锚标记助手的人都要确保您的路由参数名与路由属性中的参数相同。

关于锚标记助手MSDN

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61899360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档