Javascript html.hidden在更改名称属性时丢失值

Javascript html.hidden在更改名称属性时丢失值,javascript,jquery,html,asp.net-mvc,Javascript,Jquery,Html,Asp.net Mvc,我在my.cshtml视图中有一个@html.editorfor和一个@html.hiddenfor元素,在一个按钮单击事件中,我正在更改这两个元素的名称属性,以便可以将它们发布到单独的列表中 editorfor元素的值应该是模型中的字符串,但是hiddenfor元素的值应该是int 问题是,新列表返回的编辑器值正确,但隐藏值始终返回“0”,即使它应该是其他值。是否有其他方法将int值发回列表 顺便说一下,当我在不更改元素名称属性的情况下发回元素值时,所有内容都正确发回 下面是我用来更改名称属性

我在
my.cshtml
视图中有一个
@html.editorfor
和一个
@html.hiddenfor
元素,在一个按钮单击事件中,我正在更改这两个元素的名称属性,以便可以将它们发布到单独的列表中

editorfor
元素的值应该是模型中的字符串,但是
hiddenfor
元素的值应该是int

问题是,新列表返回的编辑器值正确,但隐藏值始终返回“0”,即使它应该是其他值。是否有其他方法将int值发回列表

顺便说一下,当我在不更改元素名称属性的情况下发回元素值时,所有内容都正确发回

下面是我用来更改名称属性的脚本:

//inside for loop where i is the iteration index
@Html.HiddenFor(m => m[i].EmployeeTimeSeriesDataID, new { htmlAttributes = new { @id = "tsdata_hidden_" + i } })

<script>
 $('somebutton').click(function() {
  var hiddenTsID = "#tsdata_hidden_" + aNumber; //number to match the i from the hidden for
  var nameOfHiddenToDeleteWithIndex = "deleteList[" + deleteIndex + "].EmployeeTimeSeriesDataID";
  //deleteindex starts at 0 and is incremented at the end of every button click, so the new list
  //can be correctly created starting with index[0]

  $(hiddenTsID).attr('name', nameOfHiddenToDeleteWithIndex);
 });
</script>

您的列表活页夹可能有问题,请尝试:

var nameOfHiddenToDeleteWithIndex =
    "deleteList[" + deleteIndex + "].EmployeeTimeSeriesData.EmployeeTimeSeriesDataID";

显然,html hiddenfor帮助程序有问题。当我试图检索该值时,它返回的是空值,例如:

confirm($('tsdata_hidden_0').attr('value'))
这打开了一个带有空消息的确认框,
“值”
没有显示。当我尝试相同的事情但使用不同的属性时,同样的事情发生了(我尝试了
'value'
,而不是
'name'
'id'
,它们都是空的。)

然后我做了一个常规的html隐藏输入

<input type="hidden" id="someID" name="someName" value="someValue"/>

一个确认框显示了
“someValue”
作为消息,不再为空。再次感谢你,微软,让生活变得艰难

所有发回的内容实际上都是一个字符串。完全由服务器来解释这些值并将其转换为整数。您还需要显示服务器端控制器的操作。因此,是否可以先对值执行parseInt?但是我设置了一个断点,列表的EmployeeTimeSeriesDataID是一个字符串“0”,当它应该是“1”时,我将添加控制器操作我更新了问题尽管我有VS2013,创建一个模型是很耗时的。您能否在单击按钮之前和之后从浏览器发布HTML的另存为?这可能只是Naming中的一个问题您是说在单击按钮并保存之前和之后查看源代码?这是一张表格,表格不会被提交吗?它也是一个从ajax获取内容的div,提交后页面将刷新,div将为空。我将尝试!向前的!但是,我要指出的是,我正在对另一个字段(“value1”)执行相同的操作,因此它看起来像是这个变量nameOfEditorToDeleteWithIndex=“deleteList[“+deleteIndex+”].value1”;但这是有效的??
<input type="hidden" id="someID" name="someName" value="someValue"/>
confirm($('someID').attr('value'))