2012-01-26 5 views
1

면도날을 사용하여 일부 자바 스크립트에서 OData URL을 작성하려고하는 문제가 발생했습니다. 페이지를 실행할 때 페이지에 오류가 표시됩니다. 여기 면도기를 사용하여 괄호로 URL 작성하기

은 예이다 :

var personId = 123;  
var oDataUrl = "@Url.Content("~/OData/People")(" + personId + ")"; 

예상 결과는 다음

var oDataUrl = "/OData/People(123)"; 

하지만 면도기 Url.Content 호출의 결과 함수가 될 것으로 예상하고있다.

별도의 변수를 사용하여이 문제를 해결했지만 다른 방법이 있는지 궁금해하고있었습니다.

예 해결 방법 :

var personId = 123; 
var baseUrl = "@Url.Content("~/OData/People")"; 
var oDataUrl = baseUrl + "(" + personId + ")"; 

해결 방법은 허용하지만, 뭔가 누락 된 경우 내가 알고하지 않았다.

@ : 및 < 텍스트 > </텍스트 > -이 작업을 수행 할 수있는 사람은 누구입니까?

답변

1

면도기에 관한 한 "@ Url.Content (...) (...)"은 완벽하게 유효한 C# 식입니다. 그래서 그것은 "@ Url.Content (...)"다음에 "(Url.Content (...)"를 보았고 C# 표현식의 일부로 생각했습니다. "Url.Content()"호출을 "@()"로 둘러 쌉니다. parens), 그것은 면도기에 대해 덜 혼란스럽게 만들 것입니다. :). 당신이 Func을 < INT를 반환하는 방법 "푸"가 있다면

예를 들어, 문자열 > 대리인이 통화 할 수 있습니다

@Foo(123)(456) 
면도기는 이러한 경우의 차이를 말할 수 없다

, 그래서 우리는 당신의 의지에 면도칼을 구부리기 위해 "@()"탈출구를 제공합니다. :) 도움이

var personId = 123;  
var oDataUrl = "@(Url.Content("~/OData/People"))(" + personId + ")"; 

희망 :

여기에 작동합니다 고정 된 예입니다!

+0

네, 그렇습니다. 제가 찾고 있던 해결책입니다! 감사! –

0

그것에서 따옴표를 이스케이프 한대로 제대로 보이지 않습니다 게시 된 첫 번째 블록 :

var oDataUrl = "@Url.Content(\"~/OData/People\")(" + personId + ")\""; 
or 
var oDataUrl = "@Url.Content(\"~/OData/People(" + personId + ")\""; 

:

var oDataUrl = "@Url.Content("~/OData/People")(" + personId + ")"; 

당신이 뭔가를 찾으시는 것입니까?

+0

코드는 자바 스크립트를 생성하는 Razor 템플릿입니다. 그것은 var oDataUrl = '@ Url.Content ("~/OData/People") ('+ personId + ')'로 다시 쓸 수 있습니다. 동일한 결과를 얻을 수 있습니다. –

관련 문제