2016-04-14 7 views
-1

現在、コントローラのアクションに値を渡そうとしていますが、渡そうとしている整数が長すぎます。これを克服するために、私はnew { trackingNumber = 9374869903500896631228d }を使用して試して、私のアクションのパラメータタイプをdoubleに変更しましたが、値は937486990350089663128の代わりに9.3748699035009E+21として渡されます。私のアクションに値937486990350089663128を渡すことができるように、以下のHtml.ActionLinkアクションとコントローラアクションをどのように変更できますか?html actionlinkのC#.net整数定数が大きすぎます

アクションリンク:

<div>@Html.ActionLink("Track Package", "TrackPackage", "Orders", new { trackingNumber = 9374869903500896631228 }, null)</div>

コントローラーアクション:。

public void TrackPackage(int trackingNumber) { // .....do stuff with trackingNumber }

+1

intのint型の長いデータ型はどうですか? https://msdn.microsoft.com/en-us/library/ctetwysk.aspxまたは文字列として解析するだけですか? –

+0

@AllanS.Hansenは私が言うことができる限り、この数字を表すのに十分な数字ではありませんか? –

+1

内部的に文字列として扱わないのはなぜですか? –

答えて

1

long RESP(ビッグInt64が唯一持っている整数を保持することができますC#で簡単な型がありません約18桁)。 doubleは、そのような大きな数値の範囲を持っていますが、精度が欠けています。したがって値はstringとしてのみ渡すことができます。サーバー側の数値に対して算術演算が必要な場合は、BigInteger構造体を使用できます。 Parseメソッドを使用して、文字列をBigIntegerに変換できます。

public void TrackPage(string trackingnumber) { 
    BigInteger tracker = BigInteger.Parse(trackingnumber); 
    // do something with your number 
}