C# 如何隐藏模型中的默认值以避免在表单中显示?
以剃须刀的形式,我有这样一个:C# 如何隐藏模型中的默认值以避免在表单中显示?,c#,asp.net-mvc,asp.net-mvc-4,entity-framework-4,C#,Asp.net Mvc,Asp.net Mvc 4,Entity Framework 4,以剃须刀的形式,我有这样一个: @Html.TextBoxFor(vm => vm.User.TotalSales) 由于用户对象不为null,TotalSales的值默认为0,并显示在表单中 有没有一种方法可以使用内置的helper将其清空,或者我必须通过javascript或其他方式来实现这一点 我担心如果我必须通过javascript执行此操作,当用户发布表单并且出现错误时,我的javascript将再次擦除该文本框,而它不应该这样做。您可以在输出文本框之前进行检查: @if (
@Html.TextBoxFor(vm => vm.User.TotalSales)
由于用户对象不为null,TotalSales的值默认为0,并显示在表单中
有没有一种方法可以使用内置的helper将其清空,或者我必须通过javascript或其他方式来实现这一点
我担心如果我必须通过javascript执行此操作,当用户发布表单并且出现错误时,我的javascript将再次擦除该文本框,而它不应该这样做。您可以在输出文本框之前进行检查:
@if (vm.User.TotalSales != 0)
{
Html.TextBoxFor(vm => vm.User.TotalSales)
}
else{
Html.TextBoxFor(vm => vm.User.TotalSales.Age, new { @Value = "" })
}
在我的应用程序中,我将属性设置为nullable,并将它们标记为RequiredAttribute。使用带有required属性的模型验证。像这样的
[Required]
public int age{ get; set; }
我想你误解了,vm.User从来都不是空的,问题是TotalSales属性是int,默认为0。因此表单文本框默认值为0,我希望它为空。是的,我不希望默认值为0。好的,我添加了一个else子句,该子句输出文本框,但值为空。我还编辑了checkMine是必填字段,我不希望db表中出现空值。我使用它为MVC创建单独的模型。所以,在DB模型中具有不可为null的属性,而在视图模型中具有可为null的属性并不是问题。当然,这需要额外的努力,但可以在模型中放置更多的数据,而不是ViewBag