2012-04-06 2 views
2

ASP.NET MVC 3과 헬퍼 @ Html.Raw를 사용하고 있습니다.절대 URL을 변경하는 ASP.NET MVC3 Html.Raw?

데이터베이스에 저장 한 HTML 마크 업을 전달 중입니다. 마크 업에는 내 사이트의 다른 위치를 가리키는 URL이 포함되어 있습니다. 예 : http://www.foo.fom/events. 이 데이터는 포럼 게시물이기 때문에 표시되는 페이지의 형식은 http://www.foo.com/forums/thread/42/slug입니다. 이 단지 내 사이트의 URL에 대한 발생

http://www.foo.com/forums/thread/42/events/

: 페이지가 렌더링 될 때

그러나 구원의 URL은 다음과 같이 수정 된 형태로 렌더링됩니다. URL이 일부 외부 사이트를 가리키는 경우 변경되지 않습니다.

나는 @ Html.Raw에 전달하는 것이 정확한 URL (http://www.foo.com/events)임을 확인했습니다. 페이지가 렌더링 될 때 왜 변경됩니까? 이 "기능"을 비활성화하는 쉬운 방법이 있습니까?

다음은 마크 업을 표시하는 내 코드입니다 :

<div> 
     @Html.Raw(post.Body) 
</div> 

여기 페이지 데이터를 genrates 컨트롤러 코드입니다 :

var post = _forumRepository.GetPostById(id) 

var model = new ForumPostView() 
{ 
    Body = post.Body, 
    PostDate = post.DatePosted, 
    PostedBy = post.Author, 
    PostId = post.Id 
}; 

return View(model); 

내가 디버거를 통해 확인한 그 게시물의 정확한 URL을 제공해야합니다. 보기로 다시 전달되기 전에 본문은 "http://www.foo.com/events"형식입니다 (뒤에 슬래시는 없습니다). 또한 디버거를 통해 @ Html.Raw에 값이 전달되기 전에 값이 변경되지 않았 음을 확인했습니다.

+0

실제 코드를 우리에게 보여줘. Html.Raw는 URL 재 매핑을하지 않으므로 다른 일을합니다. –

+0

@Mystere가 지적했듯이,'Html.Raw'는 데이터를 조작하지 않습니다. 우리에게'post.Body'의 정확한 내용을 보여주십시오. 아마도 파일에 쓰면 그 데이터가 무엇인지 정확히 알 수 있습니다. –

+1

다소 이상합니다. 보기에서 "게시"를 어떻게 설정하고 있습니까? 그게 모델이 될 수 없어. 바디? –

답변

1

사이트의 다른 페이지를 가리키는 URL이 절대적이지 않은 것처럼 들립니다. 특정/ 또는 http으로 시작합니까? 그렇지 않은 경우에는 예상대로 동작하고 상대 URL과 같이 처리하여 현재 URL에 추가합니다.

또한, 그것은 우리에게 코드를 보여 해치지 않을 것

( Html.Raw 문자열을 조작하지 않습니다, 그래서 여기에 잘못이 아니다).

1

아니요, 사실 저는 바보입니다. URL은 /가없는 상대 형식으로 실제로 저장되었으므로 결국 현재 페이지와 관련이 있습니다. 표시된 텍스트는 절대적이었습니다. 이것은 제가 db를 보았을 때 본 것입니다. 그게 내가 몇 시간 동안 잠을 자도록 디버깅 할 때 얻는 것이다.)

+0

ㅎ, 우리 모두에게 일어났습니다. :) 다시보고 주셔서 감사합니다! –