将十进制模型/重置文本框中的默认值设置为空白而不是mvc为0

时间:2013-10-04 21:05:03

标签: c# asp.net-mvc razor

我有两个问题围绕十进制文本框并向报表提交正确的值。这是带Razor的MVC 3 C#。

我的用户希望针对特定价格范围,起始价格范围和结束价格范围运行报告。两者都是模型中定义的十进制数据类型的文本框。它们也是可选的,因为用户可以选择其他一些参数,但我特别遇到了十进制类型的问题。加载视图时以及通过清除按钮重置时,两个文本框都默认为0。我需要在视图加载时以及重置时将其默认值设置为空白。我在视图中设置了以下内容,它可以很好地显示空白字段。

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

然而,唯一的问题是,当我尝试运行报告时它仍在寻找值,并在不需要运行报告时向用户提供“参数是必需的”。有没有办法在幕后传递空值甚至0?

我不断搜索,并在模型中尝试了几个默认值选项,一切都没有。我在视图中尝试了占位符。我试过HiddenFor字段。我尝试了以下类似的默认值:

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

我真的不想回去改变所有这些只接受字符串,只有在我不需要的时候!如果这是可能的话,就完全卡住了。

1 个答案:

答案 0 :(得分:5)

您可以使视图模型上的PriceRangeStart属性为可以为零的小数:

public decimal? PriceRangeStart { get; set; }

然后在视图中:

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

现在,如果没有值(空字符串),则该属性将具有空值。