javascript
  • c#
  • asp.net-mvc
  • url
  • asp.net-web-api
  • 2016-04-05 5 views 0 likes 
    0

    I持ってModel.MyApiCall @渡すURL - 「&」の後にすべてが失われる

    <a href="javascript://" onclick="@Model.MyApiCall"></a> 
    

    は次のようになります文字列がある

    onclickイベントでAPI呼び出しを行うMVCアプリケーション:

    window.location = 'http://localhost/myPath?myImagePath=http://myimagepath&width=360&category=2' 
    

    これでAPIが正常に呼び出されます。ここまでは順調ですね。 しかし何らかの理由で&以降のすべてがmyImagePathから切り離されています。代わりにmyImagePathは私のクリックから送信されたものに等しいのだから、私はこれだけを取得しています:

    http://myimagepath 
    

    答えて

    0

    アンパサンド(&)の特殊文字であり、適切にブラウザによって解析されるようにエンコードする必要があります。クエリ文字列と実際のパスを別々の文字列に分割する必要があります。このような何か:あなたはあなたのクエリ文字列パラメータをエンコードする必要が

    window.location = 'http://localhost/myPath?myImagePath=http%3A%2F%2Fmyimagepath%26width%3D360%26category%3D2'; 
    
    +0

    おかげで、これは私が必要なものです。 – JAck28

    1

    <a href="javascript://" onclick="@(Model.MyApiCallPath + 
    HttpUtility.UrlEncode(Model.MyApiCallQueryString))"></a> 
    

    最終的なjsのは次のようになります。あなたは、javacriptで

    window.location = 'http://localhost/myPath?myImagePath=' + encodeURIComponent('http://myimagepath') + '&width=360&category=2' 
    

    を使用してそれを行うことができますencodeURIComponentを使用してください。

    Model.MyApiCallhttp://myimagepath部分にのみHttpUtility.UrlEncodeを使用してMVCコントローラ内で行うこともできます。

    [編集]

    あなたmyImagePathパラメータが全体http://myimagepath&width=360&category=2文字列がある場合は、もちろんスティーブダナーは右であり、あなたが彼の答えに従ってください。

    0

    urlをURLパラメータとして渡そうとしています。問題のURLには特殊文字が含まれているため、uriコンポーネントをエスケープ/エンコードする必要があります。

    あなたはASP.Netを使用しているので、あなたが文字列をラップする必要があります

    window.location = Uri.EscapeUriString('http://localhost/myPathmyImagePath=http://myimagepath&width=360&category=2') 
    
    関連する問題