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'))