从ASP.NET页面向C#发布值

时间:2014-01-07 09:37:24

标签: c# javascript asp.net screen-resolution

我有一个JavaScript函数如下:

function getWindowSize() {
   test.value = $(window).width();
   test2.value = $(window).height();
}

window.onresize = getWindowSize;

在ASP.NET页面中:

<input type="text" id="test2" value="Test"/>  
<input type="text" id="test" value="Test"/> 

这会在屏幕大小更改时填充字段。当我将页面元素设置为runat="server"时,它们不会填充屏幕大小,也无法捕获服务器端。

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

如果您有服务器标记,则需要使用ClientID。您当前没有使用getElementById,但您应该获取DOM元素以获得更好的浏览器兼容性。如果您有框架4及更高版本,则可以使用ClientIDMode并在没有ClientID

的情况下执行此操作

<强>的Javascript

function getWindowSize() {
       document.getElementById('<%= test.ClientID %>').value = $(window).width();
       document.getElementById('<%= test2.ClientID %>').value = $(window).height();
}
window.onresize = getWindowSize;

<强> HTML

<input type="text" id="test2" value="Test" runat="server" />  
<input type="text" id="test" value="Test" runat="server" /> 

答案 1 :(得分:1)

由于我看不到完整的代码,我将假设ASP.NET用生成的代码替换Id属性(类似于_ctl $ Container $ test)。作为一种解决方法,如果你使用jQuery,你可以使用CSS类:

<强>的Javascript

function getWindowSize() {
       $('.WidthValue') = $(window).width();
       $('.HeightValue') = $(window).height();
}

<强> HTML

<input type="text" id="test" value="Test" class="WidthValue" runat="server" /> 
<input type="text" id="test2" value="Test" class="HeightValue" runat="server" />  

答案 2 :(得分:0)

您使用的是Masterpages吗?因为在使用主页添加ASP.NET表单控件时,他们使用前缀来标识控件:

<input id="ctl00_ContentPlaceHolder1_txtName" class="textfield" type="text" name="ctl00$ContentPlaceHolder1$txtName">

ctl00_ContentPlaceHolder1 _ 是主页的前缀。

这可能是您的javascript函数未填充字段的原因。 你如何识别你的对象test和test2?