2010-12-16 9 views
0

私はViewData変数に渡す書式付き文字列変数を持っています。 私のコントローラは、基本的に次のようになります。通貨形式の文字列をコントローラからビューに渡すにはどうすればいいですか?

if(ModelState.IsValid) 
{ 
    string total = "$2.00"; 
    ViewData["totalSales"] = total; 
    return View(); 
} 

私はこのような私の見解でHTMLヘルパー機能があります。

<label for="$2_00">00</label> 
:asp.net MVCエンジンはこれを生成しているが

<%: Html.Label(ViewData["totalSales"].Tostring()) %> 

私は、金額をビューに渡して表示したいだけです。 小数点が値を破っているようです。しかし、これを回避する方法があるはずです。 ここではノブを間違えていますか?

<p><%: ViewData["totalSales"].ToString() %> </p> 

しかし、文字列の小数点データの損失を引き起こしている理由を説明しません:


は、まあ、私はこれを行うことによって、これをバイパスすることができました。 アイデア

+0

私はちょうど私が小数は、このブレークを引き起こし、なぜ把握しようとしていますので注意したいと思います。 変数totalが小数点以下の何かに等しく設定されている場合、このテクニックは問題ありません。 – BentOnCoding

+0

@Robotshushi:あなたは、このための解決策を見つけたの?? thanks..Iも同じ問題を抱えています... plzの共有んそうなら... –

+0

Html.Labelは小数と特異的にバグがあります。そのようなテキストを表示するために使用してはいけません。私はそれの中にコードナゲットとdivを使用して終了したと思う。それは動作する必要があります= – BentOnCoding

答えて

0

Use String.Format() with currency

エスケープ/特殊文字( "。"など)をHTML属性に変換するときにエスケープ/変換します。それは設計によるものです。

また、なぜあなたはViewDataを介して、ハードコードされた文字列を渡していますか?それはあなたのモデルから計算されますか?あなたはusing Label correctlyではないかもしれません。

1

小数点としてあなたの合計変数を渡す:

decimal total = 2.0; 
ViewData["totalSales"] = total; 
return View(); 

を、あなたのビューで、次のようにラベルのレンダリング:あなたの間違いは、フレームワークが自動的にするということです

<%: Html.Label(string.Format("{0:C2}", ViewData["totalSales"])) %> 
+0

これはまだ消滅する前にすべてが発生します。 – BentOnCoding

+0

実際には、ラベルではなくテキストボックスが必要なように聞こえます。あなたは、HTMLヘルパーをスキップする方が良いです。代わりに、次の操作を行います。<= "totalSales" のラベル>取引:<%:Html.Textbox( "totalSales"、String.Formatの( "{0:C2}" のViewData [ "totalSales"])%> –

+0

ニースすばやく試してみてくださいが、使用方法が間違っていますhttp://weblogs.asp.net/scottgu/archive/2010/01/10/asp-net-mvc-2-strongly-typed-html-helpers.aspx <% :Html.Label( "総売上高"、String.Formatの( "{0:C2}" のViewData [ "totalSales"]))%> –

関連する問題