0

10 進数のテキスト ボックスとレポートへの正しい値の送信に関する 2 つの問題があります。これは Razor を使用した MVC 3 C# です。

ユーザーは、特定の価格範囲、開始価格範囲および終了価格範囲のレポートを実行したいと考えています。どちらも、モデルで定義された decimal データ型のテキスト ボックスです。ユーザーが選択できる他のパラメーターがいくつかあるため、それらもオプションですが、特に小数型に問題があります。ビューが読み込まれるとき、およびクリア ボタンでリセットされるとき、両方のテキスト ボックスのデフォルトは 0 です。ビューの読み込み時とリセット時にデフォルト値を空白にする必要があります。ビューに次のように設定しましたが、空白のフィールドを表示しても問題なく動作します。

@Html.TextBoxFor(m => m.PriceRangeStart, new { @Value = (Model.PriceRangeStart > 0 ? Model.PriceRangeStart : 0) })  

ただし、唯一の問題は、レポートを実行しようとしたときにまだ値を探していて、レポートを実行する必要がないときにユーザーに「パラメーターが必要です」と表示されることです。舞台裏で null 値または 0 を渡す方法はありますか?

私は絶え間なくグーグルで検索し、モデルでいくつかのデフォルト値オプションを試しましたが、何も機能していません。ビューでプレースホルダーを試しました。HiddenFor フィールドを試してみました。次のようなデフォルト値を試しました:

public SellerActivityReport()
{
  decimal? a = null;
  PriceRangeStart = a.GetValueOrDefault(0m);
  PriceRangeEnd = a.GetValueOrDefault(0m);
}  

必要がない場合にのみ、文字列を受け入れるようにこれらすべてを変更する必要はありません。これが可能であれば、完全に立ち往生しています。

4

1 に答える 1

5

PriceRangeStartビュー モデルのプロパティを null 許容の 10 進数にすることができます。

public decimal? PriceRangeStart { get; set; }

そして、ビュー内:

@Html.EditorFor(m => m.PriceRangeStart)

値がない場合 (空の文字列)、プロパティは null 値になります。

于 2013-10-04T21:50:22.480 に答える