2017-06-13 4 views
0

getメソッドを使用してフォームを送信しようとすると、ASP.NETコアでURIにプラス(+)が追加されるのはなぜですか?Asp.NETコアでURLにPlusが追加されます

たとえば、BMIを計算するフィールドが2つあります。heightweightです。 URLで体重後、+があるので、私は唯一のheightパラメータを取得し、コントローラで
http://localhost:59953/?height=170&weight+=65

:フォームを送信した後、私は次のURLを取得します。

[HttpGet] 
public ActionResult Index(int height, int weight) 
{ 
    // The height is 170 but the weight is 0! 
    return View(); 
} 

これは、フォームカミソリコードです:

<form method="get"> 
    <div class="form-group"> 
     <label for="height">Height in cm</label> 
     <input name="height" id="height" class="form-control"/> 
    </div> 
    <div class="form-group"> 
     <label for="weight">Weight in kg</label> 
     <input name="weight "id="weight" class="form-control"/> 
    </div> 
    <button class="btn btn-primary" type="submit">Calculate</button> 
</form> 
+1

URLのクエリ部分の空白は、プラス – Jamiec

答えて

2

あなたはあなたの体重プロパティのname属性内の余分なスペースを持って、それを削除することを検討:

<input name="weight" id="weight" class="form-control"/> 

デフォルトでは、スペースURL内で「+」文字としてエンコードされ、「ウェイト+」は「ウェイト」と同じではないため、ASP.NETは値を適切にバインドできません。

あなたが実際に取得するのではなくサーバーにデータを送信しているため、GETリクエストとは違ってPOSTを使用することを検討したいが、ユースケースが異なる場合があります。

+0

にエンコードされます。何が失敗するか。私はGETを使っていました。問題がどこにあるのか分かりました。私は、おそらく最初の議論を取るのはコンベンションだったと思った:ありがとう! –

関連する問題