在Razor生成的隐藏字段上强制执行类型,在没有强制转换的JavaScript中接收变量

Enforcing type on a Razor generated hidden field, recieving variable in JavaScript with no cast

本文关键字:转换 JavaScript 变量 Razor 隐藏 字段 类型 强制执行      更新时间:2023-09-26

我度过了这段时间,工作而快乐。请注意,我正在对所添加的值进行编号(在JS中算强制转换吗?)。

var total = 0;
$.each($("input[blopp]:checked"), function(index, value) {
  $("#Service")[0].value += +value.attributes["blopp"].value;
  total += +value.attributes["blopp"].value;
});
$("#Service")[0].value = total;

Service控件是Razor生成的隐藏字段,该字段基于提供给ASP.NET视图的模型,其类型为int。(我怀疑它没有相关性,因为一旦出现在页面上,我们只有HTML、JS和CSS,但我以前错了。)

然后我开始做一种叫做思考的事情,但并不是很成功。行数变小,增加了可读性。然而,现在的结果不是和,而是值的串联,因为保持变量是一个字符串。

$.each($("input[blopp]:checked"), function(index, value) {
  $("#Service")[0].value += +value.attributes["blopp"].value;
});

我的问题是一种简单的方法来键入(不是像在键上的中那样键入,而是像在中将某个类型强制为)接收变量,使其知道它是一个数字?

问题不是关于:

  1. 如何转换为字符串(这已经非常明显了)
  2. 如何在操作前对接收器进行编号,即a=(+a)+(+b)(优选a+=b语法)
  3. 如何将原型添加到字符串中(返回原始版本更简单)
  4. 可读性和过早优化(仅限于学术好奇心)有多大好处
  5. 如何避免污染全球范围(已经有IIFE围绕它)

要回答您想要的一个问题:

JavaScript不允许在操作中强制执行目标类型,因为任何东西都可以是弱类型语言中的任何类型(而不是像"轻轻敲击键":)中的弱类型。