2017-01-15 6 views
1

私は動的にimgを表示する必要があるASP.Netコアビューを作成しています。 私は見るために、コントローラで生成された@Model.AvatarUrl,を渡して、表示することをダイナミックイメージの表示 - javascriptの間違ったURLの読み込み

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

問題があるとして、私のURLはランダムに生成されていること、そして私は、@ Model.AvatarURLなどのリンクを持っています:

"\\Uploads\\n2wrcbyx.buf.jpg" 

ブラウザでは"\Uploads2wrcbyx.buf.jpg"と表示されていますので、ブラウザで表示したくないので、\ n特殊文字が読み込まれていて、URLが悪いと推測しています。 これを修正するには? @Model.AvatarUrlの変更は本当にオプションではありません。なぜなら、多くの問題を引き起こすからです。

+0

"\" はあなたの代わりにバックスラッシュのスラッシュ "/" を使用してみましたか? – derloopkat

+0

はい、フォワードスラッシュは動作しますが、私が望んでいたのはバックスラッシュでの作業です。 – Pawel

答えて

1

問題は、文字列がサーバー側とクライアント側で2回エスケープされていることです。ブラウザーが "\\ Uploads \\ n2wrcbyx.buf.jpg"から取得するものは "\ Uploads \ n2wrcbyx.buf.jpg"であり、\ nは改行と解釈されます。

「\\」を「\\\\」に置き換えていました。私の見解では、私のモデルでは

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

あなたはカミソリを使用して、サーバーのルートからURLを生成したい場合は

<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

関連する問題