簡體   English   中英

如何在ASP.NET MVC中使用路由配置中的連字符替換%20

[英]How to replace %20 with a hyphen from routing config in ASP.NET MVC

我需要從我的網址中刪除Modulos標志的指南。 我希望我的路由完全如下所示。

stackoverflow.com/questions/15881575/獲取所選下拉列表的值-asp-net-mvc

我的路線返回了一些東西

stackoverflow.com/questions/15881575/get%20the%20selected%20value%20of%20a%20dropdownlist-asp-net-mvc。

請注意,返回了%20。 請問我如何獲得連字符?

以下是我的路由配置。

  routes.MapRoute(
          name: null,
          url: "{controller}/{action}/{id}/{title}",
          defaults: new
          {
              controller = "Home",
              action = "Index",
              title=UrlParameter.Optional,
              id = UrlParameter.Optional
          }
          );

標題是我的操作方法中的字符串參數。 我想到這樣做:

routes.MapRoute(
          name: null,
          url: "{controller}/{action}/{id}/{title}",
          defaults: new
          {
              controller = "Home",
              action = "Index",
              title=UrlParameter.Optional.ToString().Replace(' ','-'),
              id = UrlParameter.Optional
          }
          );

但是它失敗了。 我也嘗試過

 title=UrlParameter.Optional.ToString().Replace("%20","-"),

它也失敗了。 我對此並不陌生,並試圖使其變得更好。 請任何幫助將不勝感激。

%20是空格的URL編碼版本。 您不能使用路由定義解決此問題,必須首先修改生成鏈接的代碼,以便刪除空格。

例如,如果您當前正在使用以下方法生成鏈接:

@Html.ActionLink(item.Title, "Details", new { 
    id = item.Id, 
    title = item.Title 
})

您將其更改為

@Html.ActionLink(item.Title, "Details", new {
    id = item.Id,
    title = item.Title.Replace(" ", "-")
})

請注意,您可能需要處理空格以外的其他字符,因此最好使用:

title = Regex.Replace(item.Title, "[^A-Za-z0-9]", "")

我的偏好是將其轉換為POST。 然后,您無需編寫任何將任何內容轉換為其他任何內容的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM