js设置控件value值之后后台C#获取到的value不一样

william607 2012-08-06 12:46:50
前端:
function createItem() {
var yearNum = prompt("请输入新增年份", $("#yearNum").val());
if (yearNum != null && yearNum != "") {
$("#yearNum").val(yearNum);
alert($("#yearNum").val());
document.getElementById("createItem").click();
}
}

页面调用
<a href="javascript:createItem()">新增审核年份</a>
<asp:HiddenField ID="yearNum" runat="server" />
<input id="createItem" type="button" style="display: none" runat="server" onserverclick="CreateItem"/>

后台CS
string SqlString = string.Format("insert into [YearList] (YearNum) values ({0})", yearNum.Value);

问题就是js里面设置的yearNum的value,在后台读取不到,不知道为什么,求解答,已经添加了jquery了
...全文
222 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
應燁軍 2012-08-06
  • 打赏
  • 举报
回复
我刚刚测试了一下代码可以取到值,
<asp:HiddenField ID="yearNum" runat="server" />
你的这个控件是有放在其他服务端控件里面吗?
我修改了一点你在试试

protected void Page_Init(object sender, EventArgs e) {
createItem.ServerClick += new EventHandler(createItem_ServerClick);
}
protected void createItem_ServerClick(object sender, EventArgs e) {
Response.Write(yearNum.Value);
}



<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.7b2.js" type="text/javascript"></script>
<script type="text/javascript">
function createItem() {
var yearNumHidden = $("#<%=yearNum.ClientID%>");
var yearNum = prompt("请输入新增年份", yearNumHidden.val());
if (yearNum) {
yearNumHidden.val(yearNum);
alert(yearNumHidden.val());
$("#createItem").click();
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="javascript:createItem()">新增审核年份</a>
<asp:HiddenField ID="yearNum" runat="server" />
<input id="createItem" type="button" style="display: none" runat="server" />
</div>
</form>
</body>
</html>

william607 2012-08-06
  • 打赏
  • 举报
回复
谢谢大伙,问题解决了,结贴
應燁軍 2012-08-06
  • 打赏
  • 举报
回复
正确方法 写在Page_Load 或Init里面都没错 ,关键是要加上回发的判断

protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
yearNum.Value = "123";
}
}
bonnibell 2012-08-06
  • 打赏
  • 举报
回复
<asp:HiddenField ID="yearNum" runat="server" />

是服务器端控件,
而且yearNum.Value = "2012";你放到 Page_Init 中了,
这样每次页面到后台,控件的值都会重新初始化成2012,自然取到是2012;

你改成这样的方式在后台取值,试试

protected void createItem_ServerClick(object sender, EventArgs e) {
string cc = Request.Params[yearNum.ClientID];
}
william607 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

我刚刚测试了一下代码可以取到值,
<asp:HiddenField ID="yearNum" runat="server" />
你的这个控件是有放在其他服务端控件里面吗?
我修改了一点你在试试
C# code

protected void Page_Init(object sender, EventArgs e) {
createItem.……
[/Quote]


嗯,你的可行,不过为什么先设置了值就又不行了,比如在那个 Page_Init 中先写 yearNum.Value = "2012";这样在 createItem_ServerClick 中的Value值就都是2012了,就算前面对话框怎么改都没用,你知道怎么回事吗

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧