我有两个问题围绕十进制文本框并向报表提交正确的值。这是带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);
}
我真的不想回去改变所有这些只接受字符串,只有在我不需要的时候!如果这是可能的话,就完全卡住了。
答案 0 :(得分:5)
您可以使视图模型上的PriceRangeStart
属性为可以为零的小数:
public decimal? PriceRangeStart { get; set; }
然后在视图中:
@Html.EditorFor(m => m.PriceRangeStart)
现在,如果没有值(空字符串),则该属性将具有空值。