0

我有两个问题围绕十进制文本框并将正确的值提交给报告。这是带有 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);
}  

我真的不想返回并更改所有这些以仅在不需要时才接受字符串!如果这是可能的,那就完全卡住了。

4

1 回答 1

5

您可以将PriceRangeStart视图模型上的属性设为可为空的小数:

public decimal? PriceRangeStart { get; set; }

然后在视图内:

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

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

于 2013-10-04T21:50:22.480 回答