2011-09-06 3 views
0

새 asp.net 웹 응용 프로그램으로 일부 코드를 마이그레이션하라는 요청을 받았습니다. 하지만 나는 asp.net에 매우 익숙하지 않다.xsl 코드를 asp.net/c로 마이그레이션 #

다음 코드 블록은 사용자 장치를 감지하고 이에 따라 URL을 변경합니다. asp.net/C#을 사용하여 같은 로직을 만들 필요가 있지만 어디에서 시작해야하는지 전혀 모른다.

아무런 도움이 필요하지 않습니다. 이 같은

<xsl:variable name="useragent" select="lower-case(request:getHeader($request, 'user-agent'))"/> 
<xsl:variable name="is_iphone" select="string(contains($useragent, 'iphone;') or contains($useragent, 'ipad;') or contains($useragent, 'ipod;'))"/> 
<xsl:variable name="is_blackberry" select="string(contains($useragent, 'blackBerry'))"/> 
<xsl:variable name="is_android" select="string(contains($useragent, 'android'))"/> 
<xsl:variable name="application_url"> 
    <xsl:choose> 
     <xsl:when test="$is_iphone = 'true'"> 
      <xsl:value-of select="f:getEnvParameter(concat('url.app.iphone.', $param_client), '')"/> 
     </xsl:when> 
     <xsl:when test="$is_blackberry = 'true'"> 
      <xsl:value-of select="f:getEnvParameter(concat('url.app.blackberry.', $param_client), '')"/> 
     </xsl:when> 
     <xsl:when test="$is_android = 'true'"> 
      <xsl:value-of select="f:getEnvParameter(concat('url.app.android.', $param_client), '')"/> 
     </xsl:when> 
     <xsl:otherwise> 
      <xsl:value-of select="''"/> 
     </xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 
<xsl:variable name="application_url_exists" select="string-length(string($application_url)) != 0"/> 
+0

변환해야하는 XSL 코드의 양은 얼마입니까? .NET은 XSL을 그대로 실행할 수 있다는 것을 알고 있습니다 ... 어떤 라이브러리'f'가 매핑 되더라도 환경을 모방하기위한 확장 메서드를 제공하면됩니다 (아마 어쨌든해야 할 것입니다). – harpo

답변

2

뭔가 :

//create your application url - for whatever you use this for after 
      var applicationUrl = string.Empty; 
      //Get the user agent 
      var userAgent = Request.ServerVariables["HTTP_USER_AGENT"]; 
      //test the useragent and set application url 
      if(userAgent.Contains("blackBerry")) 
      { 
       applicationUrl = "url.app.blackberry"; 
      } else if(userAgent.Contains("android")) 
      { 
       applicationUrl = "url.app.android"; 
      }...etc 

그런 다음 그러나 당신이 필요로하는 당신의 applicationUrl을 사용하려면 나중에 ... 아마도 일부 리디렉션 또는 다른 ... 이런

+0

감사합니다. 시동기를위한 단단한 기초. 도움을 감사하십시오. – JFFF

+0

probs, 행운을 빕니다. – Timbo

1

뭔가 당신의 대부분을 얻어야한다 그 길. 당신이 필요한 경우

string applicationUrl = String.Format("mysiteurl.app.{0}", Request.UserAgent.ToLower()); 

: 모든에서 "응용 프로그램"변경이 가장 간단한 방법이 될 수 있습니다 경우에 따라

: 당신이 URL을 연결하는 방법에 대한 자세한 내용을 제공 할 수있는 경우에, 나는 내 대답을 업데이트합니다 사용자 에이전트를 기반으로하는 경로에 대한 추가 조작을 수행하면 다음과 같이 할 수 있습니다.

string userAgentPath = String.Empty; 

switch (Request.UserAgent.ToLower()) 
{ 
    case "iphone": 
     userAgentPath = "app.iphone"; 
     break; 
    case "blackberry": 
     userAgentPath = "app.blackberry"; 
     break; 
    case "android": 
     userAgentPath = "app.android"; 
     break; 
} 

string applicationUrl = String.Format("mysiteurl.{0}", userAgentPath); 
+0

도움 주셔서 대단히 감사합니다. 두 가지 대답을 예제로 사용하여 여기에서 나머지 코딩을 관리 할 수있을 것입니다. – JFFF

+0

@JFFF : 내 대답을 수정했습니다. 당신이해야 할 일에 따라, 아마도 가장 쉬운 제안 일 것입니다. –