我的模型中有以下javascript和输入字段。
script type="text/javascript">
function sum() {
var txtFirstNumberValue = document.getElementById('money1').value;
var txtSecondNumberValue = document.getElementById('money2').value;
var txtThirdNumberValue = document.getElementById('money3').value;
var result = parseFloat(txtFirstNumberValue) + parseFloat(txtSecondNumberValue) + parseFloat(txtThirdNumberValue);
if (!isNaN(result)) {
document.getElementById('Total').value = result;
}
}
</script>
<div class="form-group">
@Html.LabelFor(model => model.Total, "Total", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
<input type="text" id="Total" name="Total" />
@*@Html.EditorFor(model => model.Total)*@
@Html.ValidationMessageFor(model => model.Total)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.money1, "money1", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@*@Html.EditorFor(model => model.money1)*@
<input type="text" id="money1" onkeyup="sum();" name="money1" />
@Html.ValidationMessageFor(model => model.money1)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.money2, "money2", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@*@Html.EditorFor(model => model.money2)*@
<input type="text" id="money2" onkeyup="sum();" name="money2" />
@Html.ValidationMessageFor(model => model.money2)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.money3, "money3", new { @class = "control-label col-md-5" })
<div class="col-md-offset-0">
@*@Html.EditorFor(model => model.money3)*@
<input type="text" id="money3" onkeyup="sum();" name="money3" />
@Html.ValidationMessageFor(model => model.money3)
</div>
</div>
一切正常。当我在3个货币字段中键入值时,结果值将显示在“总计”字段中。在MVC中,如果单击详细信息视图,它将显示所有四个值,但是如果单击编辑视图,则所有四个字段都为空。问题是如何让值显示并保持编辑模式?
答案 0 :(得分:4)
嗯,对于初学者,你的模型绑定输入字段被注释掉了:
@*@Html.EditorFor(model => model.money1)*@
为了让这些工作起作用,您需要取消评论。
你可以只是用模型值手动填充你的标记,如下所示:
<input type="text" id="money1" onkeyup="sum();" name="money1" value="@model.money1" />
那应该使用模型的input
值预先填充money1
。虽然您承担了手动实现内置HTML帮助程序为您提供的任何其他内容的责任。除非有令人信服的理由不使用Html.EditorFor()
,否则我认为这将是更好的选择。