【发布时间】:2015-12-31 18:32:02
【问题描述】:
我有一个维修订单域模型。这里只是它的三个属性:
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
[DisplayName("Labor Total")]
[ScaffoldColumn(true)]
[ReadOnly(true)]
public virtual decimal LaborTotal => Labor.Sum(p => p.LineTotal);
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
[DisplayName("Parts Total")]
[ScaffoldColumn(true)]
[ReadOnly(true)]
public virtual decimal PartsTotal => RepairOrderParts.Sum(p => p.LineTotal);
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
[DisplayName("Order Total")]
[ScaffoldColumn(true)]
[ReadOnly(true)]
public virtual decimal OrderTotal => LaborTotal + PartsTotal;
在搭建控制器和视图后,我修改了 Edit.cshtml,使其包含我的三个货币属性:
<div class="form-group">
@Html.LabelFor(model => model.LaborTotal, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.TextBoxFor(model => model.LaborTotal, new {@class = "form-control", @readonly = "readonly", Value = string.Format("{0:C}", Model.LaborTotal) })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.PartsTotal, htmlAttributes: new {@class = "control-label col-md-2"})
<div class="col-md-10">
@Html.TextBoxFor(model => model.PartsTotal, new {@class = "form-control", @readonly = "readonly", Value = string.Format("{0:C}", Model.PartsTotal) } )
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.OrderTotal, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.OrderTotal, new { @class = "form-control", @readonly = "readonly", Value = string.Format("{0:C}", Model.OrderTotal) } )
</div>
</div>
如果我删除该行的 Value = string.Format… 部分。所有 vales 显示正常,我可以进行更改并保存记录。留下Value = string.Format…,我的值格式正确,但我无法保存任何更改。它抱怨所有三行都不是数字(没有逗号或美元符号)。我取出了 Validate 行,但这并没有帮助,也没有将其切换到 @EditorFor。
提前致谢,
编辑:
工作但未格式化货币:
<div class="form-group">
<label class="control-label col-md-2" for="LaborTotal">Labor Total</label>
<div class="col-md-10">
<input class="form-control" data-val="true" data-val-number="The field Labor Total must be a number." data-val-required="The Labor Total field is required." id="LaborTotal" name="LaborTotal" readonly="readonly" type="text" value="75.00" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="PartsTotal">Parts Total</label>
<div class="col-md-10">
<input class="form-control" data-val="true" data-val-number="The field Parts Total must be a number." data-val-required="The Parts Total field is required." id="PartsTotal" name="PartsTotal" readonly="readonly" type="text" value="0" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="OrderTotal">Order Total</label>
<div class="col-md-10">
<input class="form-control" data-val="true" data-val-number="The field Order Total must be a number." data-val-required="The Order Total field is required." id="OrderTotal" name="OrderTotal" readonly="readonly" type="text" value="75.00" />
</div>
</div>
尝试格式化货币:
<div class="form-group">
<label class="control-label col-md-2" for="LaborTotal">Labor Total</label>
<div class="col-md-10">
<input Value="$75.00" class="form-control" data-val="true" data-val-number="The field Labor Total must be a number." data-val-required="The Labor Total field is required." id="LaborTotal" name="LaborTotal" readonly="readonly" type="text" value="75.00" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="PartsTotal">Parts Total</label>
<div class="col-md-10">
<input Value="$0.00" class="form-control" data-val="true" data-val-number="The field Parts Total must be a number." data-val-required="The Parts Total field is required." id="PartsTotal" name="PartsTotal" readonly="readonly" type="text" value="0" />
</div>
</div>
<div class="form-group">
<label class="control-label col-md-2" for="OrderTotal">Order Total</label>
<div class="col-md-10">
<input Value="$75.00" class="form-control" data-val="true" data-val-number="The field Order Total must be a number." data-val-required="The Order Total field is required." id="OrderTotal" name="OrderTotal" readonly="readonly" type="text" value="75.00" />
</div>
</div>
【问题讨论】:
-
你能分享渲染的html吗?即你从这把剃须刀得到的 html
-
够了吗,@lazy?我被指责在我的问题中投入过多。
-
感谢您发布 HTML。看起来如果我们使用 Editor For 它应该将 html 输入设置为十进制,然后使用日期格式字符串将正确格式化该值。此外,对于格式化,您可以使用此 stackoverflow 示例中给出的 CSS - stackoverflow.com/questions/5080451/…