如何将输入字段绑定到模型MVC的编辑器

时间:2014-12-31 13:37:41

标签: asp.net-mvc

我的模型中有以下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中,如果单击详细信息视图,它将显示所有四个值,但是如果单击编辑视图,则所有四个字段都为空。问题是如何让值显示并保持编辑模式?

1 个答案:

答案 0 :(得分:4)

嗯,对于初学者,你的模型绑定输入字段被注释掉了:

@*@Html.EditorFor(model => model.money1)*@

为了让这些工作起作用,您需要取消评论。

可以只是用模型值手动填充你的标记,如下所示:

<input type="text" id="money1" onkeyup="sum();" name="money1" value="@model.money1" />

那应该使用模型的input值预先填充money1。虽然您承担了手动实现内置HTML帮助程序为您提供的任何其他内容的责任。除非有令人信服的理由不使用Html.EditorFor(),否则我认为这将是更好的选择。