尽管花费了数小时,但我无法弄清楚这一点。我有一个带有两个文本框的简单动态创建页面(使用控制器加载的 vbhtml)。
页面上有一个保存按钮。此按钮调用页面内 Javascript 函数。在函数中,我有以下几行:
function saveData()
{
var lDescr = $('#FundNote').val(); // FundNote is the id of a textbox
var DocUrl = $('#DocUrl').val(); // DocUrl is the id of another textbox
alert(lDescr);
alert(DocUrl);
//ajax call to a controller
}
问题是每次显示此页面时,这些变量都会继续返回与第一次输入的值相同的值。如果我清理浏览器缓存,则会返回新输入的值,但它会一直返回相同的值,直到再次清理浏览器缓存。每次显示此页面时,文本框都是空的,并且用户输入值,因此页面本身不会保留值。
任何指针?
更新
花了几天后,这就是我修复它的方式(暂时)。
似乎即使控制器正在发送更新的 html 并且在浏览器上显示正常(html 包含一个下拉框,该下拉框动态填充不同的值。每次值不同但在 javascript 中,旧值被返回(例如,选择选项的旧值,该值甚至没有包含在当前的 html 渲染中)。仍然不知道为什么会发生这种情况。解决方案中还有其他类似的页面,它们工作正常。)。
不管怎样,我做了什么(现在让它工作),我在类中添加了一个 RandonNo() 属性,该属性动态地创建了这个 html(通过一个控制器和一个 vbhtml 文件)。然后在 vbhtml 中,我将这个随机数附加到所有 html 组件 ID。我也像这样将相同的数字传递给 javascript" Save()
" 函数OnClick="Save('@Model.RandonNo')
。在 Save 方法中,然后我更改了$('#idOption') to $('#idOption-'+ randomno)
. 它似乎正在工作,因为 ID 每次都不同。