应该是个小问题(本人初学)

时间:2022-10-26 11:00:41

  只想做一个简单的功能。麻烦大家帮我看一下吧

<% 
            Book b=new Book ();
            for (int count = 1; count < b.GetCount() + 1; count++)
            { 
                 %>
                <asp:HyperLink ID="Myhl" runat="server" NavigateUrl="~/Default.aspx?currentPage=<% Response.Write(count); %>"><% Response.Write(count); %> 页</asp:HyperLink>
                <%
            }
        %>

一个超连,后面跟着一个currentPage参数,参数值是count变量,就是这么简单的问题,但老报找不到count变量(先前是学jsp的)本人估计是生命周期的问题。。请大家帮我解决这个问题。。

12 个解决方案

#1


看来你还是没转过来

你最容易理解的办法
前头写上这段服务器端脚本

<script runat="server" language="C#">
    int count = 0;
</script>


然后你那段for (int count = 1; count  < b.GetCount() + 1; count++) 
把"int"去掉

#2


其实你完全不应该这么写.
ASP.NET 使用一种CodeBehind技术,
你的代码可以在CS文件中写.

前台就是标签.

#3


我想动态输出几十个标签呢?
在后台new出来吗?那样感觉好像很麻烦哦。。

#4


<script runat="server" language="C#">
    int count = 0;
</script>

谢谢二楼。。用这种办法是可以解决一部分问题。。但当我按下超连的时候还地址栏的参数不对哦。
地址栏的参数本应该是
http://localhost:1501/dome2/Default.aspx?currentPage=2
这样的。。但当我点超连的时候地址栏却是这样的。。请问我哪里写错的。。http://localhost:1501/dome2/Default.aspx?currentPage=<%%20Response.Write(count);%20%>
题目代码没改就加上那个脚本而以

#5


<%% %%>

老兄你见过这么写的么?!?!?!?!?!

#6


引用 5 楼 lujiaxing2007 的回复:
<%% %%> 

老兄你见过这么写的么?!?!?!?!?!


什么阿

说错了
<%Response.Write(count)%>">
你在<%前后加空格干嘛阿

#7


<%  
            Book b=new Book (); 
            for (int count = 1; count  < b.GetCount() + 1; count++) 
            {  
                 %> 

写法很奇怪,估计你的count声明局限在这里了。你这种写法我从未写过。你还是保留在asp的写法风格上,这样就感觉失去了.net的代码分离有点了。建议不要这样写

#8


<script runat="server" language="C#">
    int count = 0;
</script>

你把上面的int改成var試試,我也是初學的,也不太懂

#9


引用 2 楼 lujiaxing2007 的回复:
其实你完全不应该这么写. 
ASP.NET 使用一种CodeBehind技术, 
你的代码可以在CS文件中写. 

前台就是标签.

2楼说的没错,你在HTML中写代码还不好调试

#10


你所使用的是服务端控件,你说到是生命周期的问题,这是对的,控件的初试化在pageinit事件.而你变量的执行在pageload.所以在控件初始化的时候还没有变量.
你可以用绑定的方法使服务端控件获得变量值<%# 变量%>而不是<%= 变量%>.
另外你也可以用一般控件直接使用<%=变量 %>因为一般控件没有初始化问题,所以能直接获得变量!

#11


补充上面<%# 变量%>绑定之后还要调用page.databind()才能获得变量值

#12


我知道在asp页面里写cs代码不好。。但我也想先把这个代码给调试出来呀。。
<% 
            Book b=new Book ();
            for (count = 1; count < b.GetCount() + 1; count++)
            { 
                 %>
                <asp:HyperLink ID="Myhl" runat="server" NavigateUrl="~/Default.aspx?currentPage=<%Response.Write(count);%>"><% Response.Write(count); %> 页</asp:HyperLink>
                <%
            }
        %>

我试了好几种方法。。页面后面跟的参数都是按原样输出。。根本就取不到count的值

#1


看来你还是没转过来

你最容易理解的办法
前头写上这段服务器端脚本

<script runat="server" language="C#">
    int count = 0;
</script>


然后你那段for (int count = 1; count  < b.GetCount() + 1; count++) 
把"int"去掉

#2


其实你完全不应该这么写.
ASP.NET 使用一种CodeBehind技术,
你的代码可以在CS文件中写.

前台就是标签.

#3


我想动态输出几十个标签呢?
在后台new出来吗?那样感觉好像很麻烦哦。。

#4


<script runat="server" language="C#">
    int count = 0;
</script>

谢谢二楼。。用这种办法是可以解决一部分问题。。但当我按下超连的时候还地址栏的参数不对哦。
地址栏的参数本应该是
http://localhost:1501/dome2/Default.aspx?currentPage=2
这样的。。但当我点超连的时候地址栏却是这样的。。请问我哪里写错的。。http://localhost:1501/dome2/Default.aspx?currentPage=<%%20Response.Write(count);%20%>
题目代码没改就加上那个脚本而以

#5


<%% %%>

老兄你见过这么写的么?!?!?!?!?!

#6


引用 5 楼 lujiaxing2007 的回复:
<%% %%> 

老兄你见过这么写的么?!?!?!?!?!


什么阿

说错了
<%Response.Write(count)%>">
你在<%前后加空格干嘛阿

#7


<%  
            Book b=new Book (); 
            for (int count = 1; count  < b.GetCount() + 1; count++) 
            {  
                 %> 

写法很奇怪,估计你的count声明局限在这里了。你这种写法我从未写过。你还是保留在asp的写法风格上,这样就感觉失去了.net的代码分离有点了。建议不要这样写

#8


<script runat="server" language="C#">
    int count = 0;
</script>

你把上面的int改成var試試,我也是初學的,也不太懂

#9


引用 2 楼 lujiaxing2007 的回复:
其实你完全不应该这么写. 
ASP.NET 使用一种CodeBehind技术, 
你的代码可以在CS文件中写. 

前台就是标签.

2楼说的没错,你在HTML中写代码还不好调试

#10


你所使用的是服务端控件,你说到是生命周期的问题,这是对的,控件的初试化在pageinit事件.而你变量的执行在pageload.所以在控件初始化的时候还没有变量.
你可以用绑定的方法使服务端控件获得变量值<%# 变量%>而不是<%= 变量%>.
另外你也可以用一般控件直接使用<%=变量 %>因为一般控件没有初始化问题,所以能直接获得变量!

#11


补充上面<%# 变量%>绑定之后还要调用page.databind()才能获得变量值

#12


我知道在asp页面里写cs代码不好。。但我也想先把这个代码给调试出来呀。。
<% 
            Book b=new Book ();
            for (count = 1; count < b.GetCount() + 1; count++)
            { 
                 %>
                <asp:HyperLink ID="Myhl" runat="server" NavigateUrl="~/Default.aspx?currentPage=<%Response.Write(count);%>"><% Response.Write(count); %> 页</asp:HyperLink>
                <%
            }
        %>

我试了好几种方法。。页面后面跟的参数都是按原样输出。。根本就取不到count的值