2017-01-15 1 views
1

동적으로 표시해야하는 ASP.Net Core View를 작성 중입니다. 내가보기, 컨트롤러에서 생성되는 @Model.AvatarUrl,을 전달하고 표시를동적 이미지 표시 - javascript 잘못된 URL 읽기

defaultPreviewContent: '<img src="\\@Model.AvatarUrl" alt="Your Avatar" style="width:160px">', 

문제이기 때문에, 내 URL이 무작위로 생성되는 것을, 나는 @ Model.AvatarURL로의 링크를 가지고 있어요 :

브라우저가 "\Uploads2wrcbyx.buf.jpg"으로 읽기 때문에 브라우저에 표시하고 싶지 않으므로 \ n 특수 문자를 읽고 내 URL이 잘못되었다고 추측하고 있습니다. 어떻게 해결할 수 있습니까? @Model.AvatarUrl의 변경은 실제로 많은 문제를 야기 할 수 있기 때문에 실제로 옵션이 아닙니다.

+0

가 "/"대신 백 슬래시의 "\"당신이 슬래시를 사용하여 시도했다? – derloopkat

+0

예, 슬래시가 작동하지만 원하는 것은 백 슬래시로 작업하는 것입니다. – Pawel

답변

1

문자열이 서버 측과 클라이언트 측에서 두 번 이스케이프 처리되지 않는 문제가 있습니다. 브라우저가 "\\ Uploads \\ n2wrcbyx.buf.jpg"에서 가져 오는 내용은 "\ Uploads \ n2wrcbyx.buf.jpg"이고 \ n은 새 줄로 해석됩니다.

"\\"을 "\\\\"로 바꾸는 것이 효과적이었습니다. 당신이 면도기를 사용하여 서버 루트에서 URL을 생성하려면 내 생각에 내 모델

public string AvatarUrl { get { return "\\Uploads\\n2wrcbyx.buf.jpg"; } } 

에서

<script type="text/javascript"> 
    var model = { 
     defaultPreviewContent: '<a href="\\@Model.AvatarUrl.Replace("\\", "\\\\")">hover</a>' 
    }; 
    document.getElementById('target').innerHTML = model.defaultPreviewContent; 
</script> 

마지막으로 링크에 대한 URL이

http://uploads/n2wrcbyx.buf.jpg 

처럼 보인다 그것 :

defaultPreviewContent: '<a href="@Url.Content(@Model.AvatarUrl.Replace("\\", "\\\\"))" 

은 당신이 얻을 :

http://localhost:7669/Uploads/n2wrcbyx.buf.jpg 
+0

고맙습니다. 그것은 좋은 답변을 것, 그러나, 나는 내 구현을 바꿀 마침내 사용//, 그래서 나는 문제가 없어. – Pawel