2013-07-16 5 views
0

인코딩 방법이 MvcHtmlString 인 확장 메소드가 있습니다. 어떤 경우에는 쿼리 문자열 매개 변수를 경로에 추가합니다. 원하는 결과는 다음과 같습니다. List/View/28?category=0&sort=Default 그러나 대신 인코딩 된 문자열이 렌더링됩니다. ListView/28%3fcategory%3d0%26sort%3dDefault인코딩 된 MvcHtmlString을 Html.Decode 할 수 없습니다.

내 C# 및 내 Razor 코드에서 해독을 시도했지만 효과가 없습니다. 내가 할 수있는 다른 것이 있습니까?

public static MvcHtmlString GenerateLanguageLink(this HtmlHelper html) 
     { 
      var routeDictionary = html.ViewContext.RouteData.Values; 

      var queryStringCollections = html.ViewContext.HttpContext.Request.QueryString; 
      var queryStringText = string.Empty; 
      if (queryStringCollections.Count > 0) 
      { 
       queryStringText = queryStringCollections.ToString(); 
       routeDictionary["Id"] = HttpUtility.HtmlDecode(routeDictionary["Id"] + string.Format("?{0}", queryStringText)); 
      } 

      return html.ActionLink(linkText, routeDictionary["action"].ToString(), routeDictionary["controller"].ToString(), routeDictionary, null); 
     } 

면도기 :

routeDictionary["Id"] = (routeDictionary["Id"] + string.Format("?{0}", queryStringText)); 

와 B처럼 Razor에 구문을 떠나 :

@Html.Raw(HttpUtility.HtmlDecode(@Html.GenerateLanguageLink().ToHtmlString())) 

답변

0

그냥 코드가 있어야한다

routeDictionary["Id"] = HttpUtility.HtmlDecode(routeDictionary["Id"] + string.Format("?{0}", queryStringText)); 

아래에서 HttpUtility.HtmlDecode을 제거 노역

@Html.GenerateLanguageLink() 

이렇게하면 문제가 해결됩니다.

+0

나는 당신의 제안 Kundan을 구현했지만 여전히 같은 문제가 있습니다. – Flea

0

필자는 값을 포함하고 해독하지 않고도 적절한 쿼리를 생성하는 추가 라우트 값을 추가하여 종료했습니다.

if (queryStringCollections.Count > 0) 
    { 
     queryStringText = queryStringCollections.ToString(); 
     routeDictionary["category"] = queryStringCollections[0]; 
     routeDictionary["sort"] = queryStringCollections[1]; 
    } 

이 질문에 대한 답변을 얻지는 못했지만 올바른 방법입니다.

관련 문제