1

コントローラーにハッシュを正しく入力したいのですが、リンクに特殊文字が含まれていて、コントローラーに誤って渡されています。

localhost:51756/Account/ConfirmEmail?key=80d34666-f491-4fbd-821b-4a1e5608e710&hash=B4fcSyRuy/2j94sek8JMxr7+kDg=&newEmail=aGFuc3BvcHBlQGhvdG1haWwuY29t

コントローラーのハッシュ=B4fcSyRuy/ 2j94sek8JMxr7 kDg =

public ActionResult ConfirmEmail(string hash, string key, string newemail)
    {
         //do something.
    }

'+'は''で変更されました。誰もが私のURLから生のパラメータを取得するアイデアを持っていますか?

ありがとう、ハンス

4

2 に答える 2

0

URL内のすべてのクエリ文字列パラメータ値はURLエンコードする必要があります。System.Web.HttpUtility.UrlEncode(string)これを行うには、C#のメソッドまたはencodeURIComponent(str)JavaScriptのメソッドを使用できます。

URLは次のようになります。

http://localhost:51756/Account/ConfirmEmail?key=80d34666-f491-4fbd-821b-4a1e5608e710&hash=2j94sek8JMxr7%2BkDg%3D&newEmail=aGFuc3BvcHBlQGhvdG1haWwuY29t

于 2013-03-06T14:41:33.557 に答える
0

さて、あなたは2つのことをすることができます:

  1. +文字を正しくエンコードして、ASP.NETで正しくデコードできるようにします。+文字のURLエンコードされたバージョンは%2Bであるため(リンクを参照)、リンクは「... hash = B4fcSyRuy / 2j94sek8JMxr7%2BkDg...」になります。

  2. を使用して、ハッシュを元の形式にエンコードし直しますUrl.Encode

于 2013-03-06T14:45:05.287 に答える