【发布时间】:2015-06-24 07:57:59
【问题描述】:
我正在使用带有剃须刀的 ASP MVC4,但我坚持将一些信息从我的视图返回到我的控制器,并在一个包含以下元素的列表中...... 我使用 TextBox 能够运行我的 js 函数... 我使用以下 (updatesum()) javascript 在字段中动态计算我认为射手得分的总和:
<td>
@Html.TextBox("suma["+@i+"]", Model[i].ArchScore1, new{ @onchange = "updatesum()"})
@Html.ValidationMessageFor(x => x[i].ArchScore1)
</td>
<td>
@Html.TextBox("sumb["+@i+"]", Model[i].ArchScore2, new { @onchange = "updatesum()" })
@Html.ValidationMessageFor(x => x[i].ArchScore2)
</td>
<td>
@Html.TextBox("sumt["+@i+"]", Model[i].ArchTot`enter code here`alScore, new { @onchange = "updatesum()" })
@Html.TextBoxFor(x=>x[i].ArchTotalScore)
@Html.ValidationMessageFor(x => x[i].ArchTotalScore)
</td>
<script type="text/javascript">
function updatesum() {
for (i = 0; i < 15; i++) {
var sua = "suma_" + i + "_";
var sub = "sumb_" + i + "_";
var sut = "sumt_" + i + "_";
suma = document.getElementById(sua).value;
sumb = document.getElementById(sub).value;
sum = (suma - 0) + (sumb - 0);
document.getElementById(sut).value = sum;
}
}
</script>
你知道将这个javascript函数的结果添加到TextBoxFor中是否可行吗?
这是我修改后的代码:
<td>
@Html.TextBoxFor(m => m[i].ArchScore1, new{ @class = "score" })
@Html.ValidationMessageFor(x => x[i].ArchScore1)
</td>
<td>>
@Html.TextBoxFor(m => m[i].ArchScore2, new{ @class = "score" })
@Html.ValidationMessageFor(x => x[i].ArchScore2)
</td>
<td>
@Html.TextBoxFor(m => m[i].ArchTotalScore, new{ @class = "score" })
@Html.ValidationMessageFor(x => x[i].ArchTotalScore
</td>
</tr>
}
</table>
<p>
<input type="submit" value="Save" />
</p>
}
<script type='text/javascript'>
$('.score').change(function () {
var inputs = $(this).closest('tr').find('input');
inputs.eq(2).val(new Number(inputs.eq(0).val()) + new Number(inputs.eq(1).val()));
});
</script>
第三个文本框仍未填充。
【问题讨论】:
-
为什么您创建的控件与您的模型完全没有关系,并且在您提交时永远不会绑定到您的模型! -
@Html.TextBox("suma["+@i+"]", Model[i].ArchScore1) 应该是@Html.TextBoxFor(m => m[i].ArchScore1) -
你到底想计算什么? - 你想要每一行的总数和总计吗?
-
其实用户在score 1和score 2中输入了一个数字,自动计算出2的和并填入Total。
-
但是每行有 4 个文本框(在第 3 列中有 2 个文本框)对吗?你也想要一个总数吗?
-
正确。但是这个想法
标签: javascript asp.net asp.net-mvc asp.net-mvc-4 razor