ASP.NET WebForm中JavaScript修改了页面上Label的值,如何在后台代码中获取
在用ASP.NET WebForm开发一个项目时,遇到如下的一个情况
页面上有一个Textbox控件,还有2个Label 控件. 当Textbox控件中的值更改时,两个Label控件上的值做相应的更改, 这一点是通过页面中嵌入的JavaScript来实现的.
但是,Label控件上的值更改后,在后端.cs代码中,通过Label.Text 并不能取到更改后的值。
order.aspx页面代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="order.aspx.cs" Inherits="order" %> <!DOCTYPE html>
<html>
<head runat="server">
<title>Order</title>
</head>
<body>
<form id="orderForm" runat="server">
<div class="form-group">
<label>Product Size</label>
<asp:TextBox ID="productSize" runat="server" Text="" CssClass="form-control" type="number" onchange="calculateNumberOfPacks()" ></asp:TextBox>
</div>
<div class="row">
<div class="col-md-6">
<p>Number of packs:
<asp:Label ID="lbl96Pack" runat="server"></asp:Label>
</p>
</div>
<div class="col-md-6">
<p>Number of packs:
<asp:Label ID="lbl24Pack" runat="server"></asp:Label>
</p>
</div>
</div>
<div class="well">
<asp:Button ID="submit" CssClass="btn btn-primary" runat="server" Text="Place Order" OnClick="submit_Click" />
</div>
</form> </body>
<script>
//also do this on document load
//capture the value of the herd size input
window.onload = function () {
calculateNumberOfPacks();
} function calculateNumberOfPacks(){
var productSize = document.getElementById('productSize').value;
var largePacks = ;
var smallPacks; //multiply it by 1.10
productSize = productSize * 1.1; //Round it upwards
productSize = Math.ceil(productSize);
console.log(productSize); //work out how many packs are required.
largePacks = Math.floor((productSize / ));
console.log("Large Packs: " + largePacks);
smallPacks = Math.ceil((productSize - (largePacks * )) / );
console.log("Small Packs: " + smallPacks); //Now inject the value back into the dom
document.getElementById('lbl96Pack').innerHTML = largePacks;
document.getElementById('lbl24Pack').innerHTML = smallPacks;
}
</script>
</html>

页面如上面,当Textbox中的值由200改为其他值,下面的两个Label的值也会跟着更改
但是,在order.aspx.cs 后台代码中,如下获取:
this.lbl96Pack.Text , this.lbl24Pack.Text 来获取Lable的值,发现获取不到更新后的值.
原因:
你在ASPX页面上用javascript来更新了服务器端控件Label上的值,你需要回发才能使你的服务器端代码来反映这些更改.
解决方法:
创建两个隐藏的客户端控件<input>控件,把更新后的Label的两个值,同时使用JavaScript来更新到这两个隐藏的客户端控件上。在order.aspx.cs后台代码中,直接获取这两个隐藏的客户端控件的value
修改后的order.aspx 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="order.aspx.cs" Inherits="order" %> <!DOCTYPE html>
<html>
<head runat="server">
<title>Order</title>
</head>
<body>
<form id="orderForm" runat="server">
<div class="form-group">
<label>Product Size</label>
<asp:TextBox ID="productSize" runat="server" Text="" CssClass="form-control" type="number" onchange="calculateNumberOfPacks()" ></asp:TextBox>
</div>
<div class="row">
<div class="col-md-6">
<p>Number of packs:
<asp:Label ID="lbl96Pack" runat="server"></asp:Label>
<input type="hidden" name="hidden96Pack" id="hidden96Pack" value="">
</p>
</div>
<div class="col-md-6">
<p>Number of packs:
<asp:Label ID="lbl24Pack" runat="server"></asp:Label>
<input type="hidden" name="hidden24Pack" id="hidden24Pack" value="">
</p>
</div>
</div>
<div class="well">
<asp:Button ID="submit" CssClass="btn btn-primary" runat="server" Text="Place Order" OnClick="submit_Click" />
</div>
</form> </body>
<script>
//also do this on document load
//capture the value of the herd size input
window.onload = function () {
calculateNumberOfPacks();
} function calculateNumberOfPacks(){
var productSize = document.getElementById('productSize').value;
var largePacks = ;
var smallPacks; //multiply it by 1.10
productSize = productSize * 1.1; //Round it upwards
productSize = Math.ceil(productSize);
console.log(productSize); //work out how many packs are required.
largePacks = Math.floor((productSize / ));
console.log("Large Packs: " + largePacks);
smallPacks = Math.ceil((productSize - (largePacks * )) / );
console.log("Small Packs: " + smallPacks); //Now inject the value back into the dom
document.getElementById('lbl96Pack').innerHTML = largePacks;
document.getElementById('lbl24Pack').innerHTML = smallPacks; document.getElementById('hidden96Pack').value = largePacks;
document.getElementById('hidden24Pack').value = smallPacks;
}
</script>
</html>
在order.aspx.cs代码中,如下来获取值
protected void submit_Click(object sender, EventArgs e)
{ var Pack96 = Request.Form["hidden96Pack"].ToString().Trim();
var Pack24 = Request.Form["hidden24Pack"].ToString().Trim(); }
这样,就完成了
ASP.NET WebForm中JavaScript修改了页面上Label的值,如何在后台代码中获取的更多相关文章
- 客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值。
客户端的javascript改变了asp.net webform页面控件的值,后台代码中如何获取修改后的值. 无论是什么的html控件,只要加上了runat="server" ...
- Windows Store App 全球化:在后台代码中引用字符串资源
上文提到了引用字符串资源具有两种方式,分别是在XAML元素中和在后台代码中引用资源文件中的字符串资源.在第一小节已经介绍了如何在XAML元素中引用字符串资源,本小节将讲解在后台代码中引用字符串资源的相 ...
- 在后台代码中引入XAML的方法
本文将介绍三种方法用于在后台代码中动态加载XAML,其中有两种方法是加载已存在的XAML文件,一种方法是将包含XAML代码的字符串转换为WPF的对象. 一.在资源字典中载入项目内嵌资源中的XAML文件 ...
- How do I duplicate a resource reference in code behind in WPF?如何在WPF后台代码中中复制引用的资源?
原文 https://stackoverflow.com/questions/28240528/how-do-i-duplicate-a-resource-reference-in-code-behi ...
- 在后台代码中动态生成pivot项并设置EventTrigger和Action的绑定
最近在做今日头条WP的过程中,遇到需要动态生成Pivot项的问题.第一个版本是把几个频道写死在xaml里了,事件绑定也写在xaml里,每个频道绑定一个ObservableCollection<A ...
- asp.net 中点击button弹出模式对话框,选择值后返回到页面中(window.showModalDialog实现)
<td>现从事专业</td><td> <asp:TextBox ID="tbMajor" runat="server ...
- MVC中如何在controller的action中输出JS到页面上
MVC中如何在controller的action中输出JS到页面上 可以通过Http上下文对象(httpContext)就可以了,在Action中的HttpContext就是这个Action所指向的页 ...
- TML 打印预览问题,怎么设置有些内容不出现在打印预览页面上。怎么控制,有下代码 看得不是很懂 求解释
HTML <style> 标签的 media 属性 HTML <style> 标签 实例 针对两种不同媒介类型的两种不同的样式(计算机屏幕和打印): <html> ...
- 如何给DropDownList在后台代码中添加一个空的选项
代码如何: ddl_dept.Items.Insert(, new ListItem("---请选择---","")); new ListItem的第一个参数表 ...
随机推荐
- react项目中antd组件库的使用需要注意的问题
antd是蚂蚁金服推出的ui组件库,给我们在react项目开发中提供了大大的便利.但在使用的过程中,或多或少的会遇到一些问题,毕竟,用的是别人的东西,就得遵守别人的规则嘛!官方文档:https://a ...
- 如何阻止form表单中的button按钮提交
<form action="#" method="post"> <input type="text" name=" ...
- vim 的复制粘贴命令,以及使用寄存器来存放要复制的内容;
一,y(yanks)复制,p(paste)粘贴: yy 复制当前行,2yy,复制2行: Y 复制整行:Y=yy; p 粘贴到光标后: P 粘贴到光标前: 注意vim会知道你复制内容的是整行还是一个矩 ...
- Hive- Hive 的基本操作
创建数据库 create database db_hive; use db_hive; create database if not exists db_hive_02; create databas ...
- php数据结构课程---2、链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的))
php数据结构课程---2.链表(php中 是如何实现单链表的(也就是php中如何实现对象引用的)) 一.总结 一句话总结: php是弱类型语言,变量即可表示数值,也可表示对象:链表节点的数据域的值就 ...
- Delphi考虑sql注入 QuotedStr
之前只在BS架构的项目中考虑了Sql注入问题,却很少考虑到用了多年的Delphi项目也应该考虑Sql注入的问题,今天做了个实验,成功完成注入,把表里数据全部删除,以后再做Delphi项目还真的考虑这个 ...
- Nginx 0.7.x + PHP 5.2.6(FastCGI)+ MySQL 5.1 在128M小内存VPS服务器上的配置优化
对其用户和应用程序来讲,每一个VPS平台的运行和管理都与一台独立主机完全相同,因为每一个VPS均可独立进行重启并拥有自己的root访问权限.用户.IP地址.内存.过程.文件.应用程序.系统函数库以及配 ...
- POJ 2253 Frogger(warshall算法)
题意:湖中有很多石头,两只青蛙分别位于两块石头上.其中一只青蛙要经过一系列的跳跃,先跳到其他石头上,最后跳到另一只青蛙那里.目的是求出所有路径中最大变长的最小值(就是在到达目的地的路径中,找出青蛙需要 ...
- 详细的.Net并行编程高级教程--Parallel
一直觉得自己对并发了解不够深入,特别是看了<代码整洁之道>觉得自己有必要好好学学并发编程,因为性能也是衡量代码整洁的一大标准.而且在<失控>这本书中也多次提到并发,不管是计算机 ...
- Java_异常_06_ Unsupported major.minor version 52.0
二.参考资料 1.如何解决Unsupported major.minor version 52.0问题? 2.Unsupported major.minor version 52.0 3. Unsup ...