前面提到的 juanreyesv 是绝对正确的,如果您使用 javascript 更改值,则必须将信息发回服务器,否则您将看不到“代码背后”中的更改
为此,您必须通过使用强制客户端本身的回发事件
__doPostBack();
所以你的代码将是,
var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>');
var prod_id = 100;
hfproductid.value = prod_id;
__doPostBack();
然后在 Page ispostback 你会得到想要的值
if(IsPostback){
string invid = Hfproductid.Value;
}
上面的代码可以正常工作,但由于它是一个没有任何条件的强制回发,它会被连续触发,以避免你必须取 1 个隐藏字段并将其用作标志来检查是否有任何值,然后不要触发
_doPostBack()
所以你的最终代码应该看起来像
if (document.getElementById('<%= hdncheck.ClientID %>').value == "Y") {
var hfproductid = document.getElementById('<%= Hfproductid.ClientID %>');
var prod_id = 100;
hfproductid.value = prod_id;
document.getElementById('<%= hdncheck.ClientID %>').value = "N";
__doPostBack();
}
在服务器端
if (!IsPostBack)
{
hdncheck.Value = "Y";
}
if (IsPostBack)
{
string invid = Hfproductid.Value;
}