当前位置:编程学习 > C#/ASP.NET >>

如何在asp.net 服务器端获取屏幕分辨率

最近遇到一个项目,需要根据不用的终端,显示不同的内容,因此需要一种办法可以在asp.net后台获取到分辨率,然后进行处理!请注意,是要在服务器端获取,js端如何获取我知道,只是业务限制,走不通!请大家帮帮忙!
小弟分不多,能帮忙解决的给100 --------------------编程问答--------------------

客户端IP:Page.Request.UserHostAddress
用户信息:Page.User;
服务器电脑名称:Page.Server.MachineName
当前用户电脑名称: System.Net.Dns.GetHostName()
当前电脑名: System.Environment.MachineName
当前电脑所属网域: System.Environment.UserDomainName
当前电脑用户: System.Environment.UserName

浏览器类型:Request.Browser.Browser
浏览器标识:Request.Browser.Id
浏览器版本号:Request.Browser.Version
浏览器是不是测试版本:Request.Browser.Beta
浏览器的分辨率(像素):Request["width"].ToString() + "*" + Request["height"].ToString();//1280/1024

客户端的操作系统:Request.Browser.Platform
是不是win16系统:Request.Browser.Win16
是不是win32系统:Request.Browser.Win32
--------------------编程问答-------------------- 楼上的,你先自己试试能不能出来,你这样直接拷贝黏贴的,哎~~~ --------------------编程问答-------------------- 客户端IP:Page.Request.UserHostAddress
用户信息:Page.User;
服务器电脑名称:Page.Server.MachineName
当前用户电脑名称: System.Net.Dns.GetHostName()
当前电脑名: System.Environment.MachineName
当前电脑所属网域: System.Environment.UserDomainName
当前电脑用户: System.Environment.UserName

浏览器类型:Request.Browser.Browser
浏览器标识:Request.Browser.Id
浏览器版本号:Request.Browser.Version
浏览器是不是测试版本:Request.Browser.Beta
浏览器的分辨率(像素):Request["width"].ToString() + "*" + Request["height"].ToString();//1280/1024

客户端的操作系统:Request.Browser.Platform
是不是win16系统:Request.Browser.Win16
是不是win32系统:Request.Browser.Win32 --------------------编程问答-------------------- 先说明,胡乱拷贝黏贴的不给分,只给能解决问题的 --------------------编程问答-------------------- 你js会获取在把你这个js获取到的值放到某个隐藏控件里面在在后来来取这个值不就搞定了! --------------------编程问答--------------------
引用 5 楼 dongdgh 的回复:
你js会获取在把你这个js获取到的值放到某个隐藏控件里面在在后来来取这个值不就搞定了!

问题是,放了以后,在当前页面不操作的情况下是获取不到的,除非我点个按钮直接的,ok,那没有问题,如果是页面加载的时候,是没有办法取出来这个数值的 --------------------编程问答-------------------- System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width 
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height --------------------编程问答--------------------
引用 7 楼 dongdgh 的回复:
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Width 
System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height


你这个是 winform的,我找的是webform的 --------------------编程问答-------------------- 后台获得服务器的分辨率?怎么听着这么奇怪呢。
获得前台的分辨率?只能使用js等前端的技术。 --------------------编程问答-------------------- 浏览器的分辨率(像素):Request["width"].ToString() + "*" + Request["height"].ToString(); --------------------编程问答-------------------- 帮顶起! --------------------编程问答-------------------- 我的意思是说我需要再page_load里面获取到这个分辨率,通过js方式得到没有问题,但是有没有什么办法能让我在page_load里面调用到这个数值 --------------------编程问答-------------------- <input type="hidden" name="ScreenPixel" id="ScreenPixel" runat="server" />

    <script type="text/javascript">
        document.getElementById("<%=ScreenPixel.ClientID%>").value = screen.width + "×" + screen.height;
      </script>

在page_load是可以取得ScreenPixel.Value得值,你又不是在Init下取。 --------------------编程问答--------------------
引用 13 楼 learnjsee 的回复:
<input type="hidden" name="ScreenPixel" id="ScreenPixel" runat="server" />
JScript code

    <script type="text/javascript">
        document.getElementById("<%=ScreenPixel.ClientID%>").value = scr……


看上去靠谱,我去试下,如果成功,分是你的 --------------------编程问答-------------------- 给你回答问题,不是冲着你所谓的20分。
你给我如何,不给我又如何?

要刷分数早就刷起来了。

CSDN的分数能当钱用?一部分人连 封装继承多态都不懂就去学什么MVC。
当程序员你不会语法是你懒,你没有思想,你有想法  那还是你懒? --------------------编程问答-------------------- 楼上的,还是有问题,请看我的代码
前台:
 <form id="form1" runat="server">
    <div>
    <input type="hidden" id="ScreenWidthInput" runat="server" />
      <input type="hidden" id="ScreenHeightInput" runat="server" />
    </div>
    </form>
    <script>
 
    document.getElementById("<%=ScreenWidthInput.ClientID%>").value=window.screen.width;
    document.getElementById("<%=ScreenHeightInput.ClientID%>").value=window.screen.height;
   
    </script>

后台代码:

 protected void Page_Load(object sender, EventArgs e)
        {
          
            string wp =ScreenWidthInput.Value.ToString();
            string hp = ScreenHeightInput.Value.ToString();
            Response.Write(wp + "," + hp);
           
        }

调试结果:
后台的pageload先执行,然后才走的是前台的javascript,所以后台没有办法取到值的,不知道怎么解决? --------------------编程问答-------------------- 试一下在body onload加载js。 --------------------编程问答-------------------- JQuery获取分辨率

        $(function () {
            var hff = screen.height;
            var wff = screen.width;
            alert("分辨率是:"+wff+"*"+hff);
        });
--------------------编程问答--------------------
引用 17 楼 learnjsee 的回复:
试一下在body onload加载js。

应该也不行的,因为body onload的时候,input应该还没有呢,直接执行这个js脚本应该是找不到对应的控件的 --------------------编程问答--------------------
引用 18 楼 nevermore_0923 的回复:
JQuery获取分辨率

        $(function () {
            var hff = screen.height;
            var wff = screen.width;
            alert("分辨率是:"+wff+"*"+hff);
        });

jquery这种方式就更不行了,你这种方法都是页面全加载完成后才会执行的,我啥都得不到,请注意,我需要的是在后台获取到,如果只是在前台获取,我就不来问了!
--------------------编程问答-------------------- 还真不会 顶帖…… --------------------编程问答-------------------- $(function(){
  //在这里面获取客户端的分辨率,存到hidden控件中
});
然后再在page_load里获取hidden中的值
要知道是先进行页面DOM加载,然后再Page_load的 --------------------编程问答-------------------- 页面只要一F5,他就会执行Page_Load。

而$(function(){}) 是dom树构建差不多的时候才执行。你说你怎么可能用JS把得到的值让后台获取到?

只有加一个点击事件,人为的传过去

       $(function () {
            $("#BtnList0").click(function () {
                var hff = screen.height;
                var wff = screen.width;
                $.ajax({
                    type: "post",
                    url: "SelectXmlByJq.aspx?W=" + wff + "&H=" + hff + "",
                    dataType: "html",
                    success: function () {
                    }
                });
            });
        });



 if (Request.QueryString["W"] != null)
        {
            string Fenb = Request.QueryString["W"].ToString() + "*" + Request.QueryString["H"].ToString();
        }
--------------------编程问答--------------------
引用 22 楼 fish_1949 的回复:
$(function(){
  //在这里面获取客户端的分辨率,存到hidden控件中
});
然后再在page_load里获取hidden中的值
要知道是先进行页面DOM加载,然后再Page_load的


你确定吗? --------------------编程问答-------------------- 只要js能得到,何愁什么后台得不到 --------------------编程问答-------------------- 首先,这位小盆友,你的分大家都不在乎,OK?

只是本着能帮你的角度而来。。。

别拿你的分来吆五喝六,懂?因为CSDN大虾还是蛮多的。

其次,给你解决方法:

.NET后台获取前台分辨率有点过分,用JS来获取:
参考方法

另外的思路:

<script   language=JavaScript> 
window.location.href   =   "vickey.asp?Referer= <%=refer%> &Width= "+escape(screen.width)+ "&Height= "+escape(screen.height); 
</script> 

直接先用一个空白页获取分辨率,然后作为参数跳转到你的页面。推荐这个。


--------------------编程问答-------------------- ding
ding --------------------编程问答--------------------

        $(function () {
            if (window.location.href != "http://localhost:56232/Web/SelectXmlByJq.aspx") {
                return;
            } else {
                var hff = screen.height;
                var wff = screen.width;
                $.ajax({
                    type: "post",
                    url: "SelectXmlByJq.aspx?W=" + wff + "&H=" + hff + "",
                    dataType: "html",
                    success: function () {
                        //window.loaction.href = "SelectXmlByJq.aspx";
                    }
                });
            }
        });



protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["W"] != null)
        {
            string Wff = Request.QueryString["W"].ToString();
            string Hff = Request.QueryString["H"].ToString();
            if (Wff == "1440"&& Hff=="900")
            {
                
            }

        }
    }
--------------------编程问答--------------------
引用 28 楼 nevermore_0923 的回复:
JScript code

        $(function () {
            if (window.location.href != "http://localhost:56232/Web/SelectXmlByJq.aspx") {
                return;
            } else {
                var ……

好人当的过头了 --------------------编程问答--------------------
引用 29 楼 x363961461 的回复:
引用 28 楼 nevermore_0923 的回复:
JScript code

$(function () {
if (window.location.href != "http://localhost:56232/Web/SelectXmlByJq.aspx") {
return;
} else {
var ……

好人当的过头了


此话和解?都是过来人。 --------------------编程问答-------------------- 哎,看来是木有好的解决方法了!

--------------------编程问答-------------------- 给你个思路.
在你的首页或者登录页,js获取下分辨率然后存入session其他页面就可以直接调用session了. --------------------编程问答-------------------- 很简单呀。用COOKIE
1、首页加脚本
var str = "pix" + "=" + escape(screen.width+"_"+screen.height);
   document.cookie = str;
2、C#
        string[] pix = Page.Request.Cookies["pix"].Value.Split('_');
        //pix[0]:宽
         //pix[1]:高 --------------------编程问答-------------------- 很简单呀。用COOKIE
1、首页加脚本
var str = "pix" + "=" + escape(screen.width+"_"+screen.height);
   document.cookie = str;
2、C#
        string[] pix = Page.Request.Cookies["pix"].Value.Split('_');
        //pix[0]:宽
         //pix[1]:高 --------------------编程问答-------------------- --------------------编程问答-------------------- 先把这些东西存在cookies里面然后跳入到你的页面在后台获取 --------------------编程问答-------------------- http://www.wzsky.net/html/article/asp/asp2/111609.html --------------------编程问答-------------------- 研究一下:http请求头、以及 http请求头的 UA-Pixels 参数
但愿有所收益 --------------------编程问答-------------------- 真的好高深莫测啊 --------------------编程问答-------------------- 易做图,2012年的帖子都翻出来了 --------------------编程问答--------------------
引用 6 楼 jiwei12345 的回复:
[Quote=引用 5 楼 dongdgh 的回复:]

你js会获取在把你这个js获取到的值放到某个隐藏控件里面在在后来来取这个值不就搞定了!

问题是,放了以后,在当前页面不操作的情况下是获取不到的,除非我点个按钮直接的,ok,那没有问题,如果是页面加载的时候,是没有办法取出来这个数值的

获取完了用JS执行个Postback不行? __dopostback("controlid") --------------------编程问答-------------------- 我擦 这是  坟吗 --------------------编程问答-------------------- <script language="javascript"> 
x=screen.width 
y=screen.height 
alert("分辨率为"+x+"+"+y); 
</script> --------------------编程问答-------------------- 做两次跳转就可以了,首是index.html,什么都不干,只负责用js获取分辨率,浏览器情况,通过get方式跳转给index.aspx,location.href='index.aspx?swidth='+ screen.width  +"&sheight="+ screen.height;

然后index.aspx再去判断和加载
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,