asp.net结课作业中遇到的问题解决3

目录

1、想实现不止鼠标滑过就显示图片,初始化状态下也可以显示图片,且每个图片还会自动变化,该如何实现

2、 同一个项目下的网页之间可以直接在地址栏输入跳转到阅读界面从而实现在这个跳转,那么如何防止这种现象呢?

3、如何根据下拉框里的选择,显示选择的这个类型的所有文章,然后在这些书籍中选一个进行阅读

4、如何让上面3的显示显示在下面的某个区域,而不是最上方

待解决问题

1、想实现不止鼠标滑过就显示图片,初始化状态下也可以显示图片,且每个图片还会自动变化,该如何实现

        前面一篇我们说到”实现鼠标扫过书籍的名字就可以显示它的封面“这个问题的解决,是使用 JavaScript 来实现鼠标悬停在字母上时显示对应的图片,然后在html中添加 <img> 标签实现的。

而现在这个问题是在前一个问题的基础上改进了一下,所以直接在原来的代码基础上加上自动变换图片这个功能即可,使用Javascript实现自动变化和鼠标滑过显示图片代码如下:

    <script>var imageIndex = 0; // 用于自动变换图片的索引var bookTitles = ['活着', '疯人说', '被讨厌的勇气', '风雨里做个大人,阳光下做个小孩']; // 书籍标题数组// 初始化显示第一张图片window.onload = function () {showImage(bookTitles[imageIndex]);setInterval(changeImage, 5000); // 每5秒自动变换图片};// 切换图片函数function changeImage() {imageIndex = (imageIndex + 1) % bookTitles.length;var nextBookTitle = bookTitles[imageIndex];showImage(nextBookTitle);}// 显示图片的函数function showImage(bookTitle) {// 获取对应书籍的图片路径var imagePath = '';switch (bookTitle) {case '活着':imagePath = '/bookimages/huozhe.png'; break;case '疯人说':imagePath = '/bookimages/fengrenshuo.png'; break;case '被讨厌的勇气':imagePath = '/bookimages/beitaoyan.png'; break;case '风雨里做个大人,阳光下做个小孩':imagePath = '/bookimages/manhua1.jpg'; break;default:// 如果没有对应的图片路径,则不显示图片imagePath = '/bookimages/manhua1.jpg';return;}// 获取图片元素并设置图片路径var imgElement = document.getElementById('hoverImage');imgElement.src = imagePath;// 显示图片imgElement.style.display = 'block';}// 隐藏图片的函数function hideImage() {// 获取图片元素并隐藏document.getElementById('hoverImage').style.display = 'none';}</script>

2、 同一个项目下的网页之间可以直接在地址栏输入跳转到阅读界面从而实现在这个跳转,那么如何防止这种现象呢?

        例如,在我的这个项目中,要实现的是普通用户无法跳转到admin界面,但是管理员可以跳转。这时,就需要在admin.aspx.cs文件下设置:

protected void Page_Load(object sender, EventArgs e)
{// 检查用户是否登录if (Session["UserID"] == null){// 如果用户未登录,重定向到登录页面Response.Redirect("login.aspx");}else{// 检查用户是否具有管理员权限(这里假设管理员权限存储在Session中的UserType中)if (Session["UserID"].ToString() != "admin"){// 如果用户不是管理员,重定向到其他页面(如阅读界面)Response.Redirect("read.aspx");}// 如果用户登录且具有管理员权限,则允许访问管理员界面}
}

 但是通过这个问题,我突然意识到一个问题,我是设定了一个专门的账号作为管理员账号,但是若是管理员很多,那么就需要将用户的那个表拆分成好几个表,一个普通用户,一个管理员,还有一个就是用户身份表,这个后面有时间再修改吧,暂且就先使用一个特定的号吧。

另外,我还有一个错误,就是注册帐号之后没有跳转,按理说注册成功之后应该直接跳转到登陆界面直接登录的,所以在此修改一下,修改成直接跳转。

Response.Write("<script>alert('添加成功,请登录账号');window.location.href = 'login.aspx';</script>");

3、如何根据下拉框里的选择,显示选择的这个类型的所有文章,然后在这些书籍中选一个进行阅读

首先设置下拉框中的value值,然后直接根据value值进行操作:

然后直接使用就可以了。

4、如何让上面3的显示显示在下面的某个区域,而不是最上方

如果要实现这个操作,那么就得修改程序,修改为:使用 StringBuilder 加上 LiteralControl方式。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{// 检查用户是否已经登录if (!IsUserLoggedIn()){// 如果用户未登录,则小窗口提示,然后重定向到登录页面Response.Write("<script>alert('请先登录之后再进行操作');window.location.href = 'login.aspx';</script>");}else{//下面就根据下拉框的选择,显示相应的书籍,然后在该显示的所有书籍中选择想要查看的进行查看详细信息。myconnection.Open();string sqlcmd = "SELECT bookname, author FROM books WHERE typeid = @selectedValue";SqlCommand mycommand = new SqlCommand(sqlcmd, myconnection);mycommand.Parameters.AddWithValue("@selectedValue", selectedValue);SqlDataReader myreader = mycommand.ExecuteReader();// 创建一个 StringBuilder 对象用于构建书籍列表 HTMLStringBuilder sb = new StringBuilder();// 开始书籍列表区域的输出sb.Append("<div class=\"book-list\">");sb.Append("你所查询的书籍有:<br>");sb.Append("<table border=1px>");sb.Append("<tr>");//表示行for (int i = 0; i < myreader.FieldCount; i++)//使用FieldCount获取当前行中的列数{sb.Append("<td>" + myreader.GetName(i) + "</td>");//td表示列,使用GetName获取每一列的名称}sb.Append("<td>操作1</td>");//读完数据库中的数据名称之后,在表格中添加表头为操作的一列sb.Append("</tr>");//下面就是读数据库中的每一行内容,然后输出,按行读即read方法,然后使用FieldCount获取当前行中的列数,然后依次输出while (myreader.Read()){sb.Append("<tr>");for (int i = 0; i < myreader.FieldCount; i++){sb.Append("<td>" + myreader[i].ToString() + "</td>");}sb.Append("<td><a href='novel.aspx?id=" + myreader.GetValue(0) + "'>查看详细信息</a></td>");sb.Append("</tr>");}sb.Append("</table>");// 结束书籍列表区域的输出sb.Append("</div>");myconnection.Close();// 将构建好的 HTML 内容输出到 BookListPanel 中BookListPanel.Controls.Add(new LiteralControl(sb.ToString()));}
}

原因如下:

        在 ASP.NET Web Forms 中,Response.Write 直接向输出流写入内容,通常用于在页面生命周期的早期输出静态内容。然而,如果你想将动态生成的 HTML 添加到一个特定的控件(如 <asp:Panel>)中,Response.Write 可能会导致不可预期的结果,例如:

- 内容可能不在预期的位置,特别是如果在页面生命周期中后期使用 Response.Write。

- 它可能导致部分内容在页面控件之外输出,从而导致页面结构混乱。

        StringBuilder 用于构建一段较长的字符串,然后将该字符串添加到某个控件中。这种方式确保了输出内容被放置在预期的位置,并且减少了向客户端传输的数据量(因为只进行一次控件更新)。

        如果想在 <asp:Panel> 中添加内容,建议使用 StringBuilder 并通过 LiteralControl 将最终的内容添加到控件中,这样可以确保内容准确地插入到指定的 Panel 中。不过,如果希望直接使用 Response.Write 向页面输出内容,可以这么做,但要注意其在页面生命周期中的位置,确保不会导致内容错位。对于复杂的动态页面内容,直接使用 Response.Write 可能导致意外问题。

        综上所述,使用 StringBuilder 加上 LiteralControl 是一种更可控、更可靠的方式,可以确保内容添加到指定的控件中并且不会干扰页面其他部分的结构。所以,虽然你可以使用 Response.Write 来输出内容,但为了确保内容被正确定位到特定控件内,并避免页面结构混乱,使用 StringBuilder 和 LiteralControl 是更好的做法。

今天就解决了这一点,就先这样吧。

待解决问题

?如何删除运行的缓存问题,因为每次运行之后,样式表的格式就算改变了,也不会影响显示的样式,应该是缓存问题,所以应该如何修改

?点击首页显示的书籍,如何按照点击的名称,进入相应的书籍简介呢

?怎么实现点击书籍,进入阅读界面,然后开始阅读呢

        首先肯定得先写个数据库来存储,然后至于怎么显示,就是一个问题。

?在read界面下显示选择的下拉框里的书籍,然后在这些书籍中添加一个查看详细信息,点击查看详细信息之后跳转到novel界面,使用下面的开始阅读进入书籍的内容,然后开始阅读。

目前,novel网页中的代码是错误的,需要修改。

?点击某个书籍,如果是跳转到一个新的网页,那书多了得写很多个网页,所以跳转的方式肯定不是直接跳转到某个固定页面,那么该如何实现跳转

?我想要实现跳转的是一个界面,只是编号不同,该怎么实现呢?(几种不同的书籍,好像可以通过UserControl实现。)

?不支持MasterPageFile="~/MasterPage.master"吗?为什么

?如何实现bookListPlaceholder这种方式下的

 ?如何使得DropDownList中的某个选择还能继续向下选

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/8336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自主实现Telnet流量抓取

自主实现Telnet流量抓取 根据测试需求&#xff0c;需要抓取Telnet流量包&#xff0c;使用wireshark Python&#xff08;socket、telnetlib库&#xff09;实现 实现代码 主要此处有坑&#xff0c; 根据协议规则&#xff0c;wireshark 默认端口为23 的是Telnet协议&#xff0…

【JavaEE精炼宝库】计算机是如何工作的

目录 前言&#xff1a; 一、冯诺依曼体系 二、CPU基本知识 2.1 硬盘|内存|CPU关系&#xff1a; 2.2 指令&#xff1a; 2.3 CPU是如何执行指令的&#xff08;重点&#xff09;&#xff1a; 2.4 小结&#xff1a; 三、编程语言 3.1 程序&#xff1a; 3.2 编程语言发展&a…

【人工智能】博弈搜索(极小极大值、α-β剪枝)

1. 极小极大值算法 人工智能中 “博弈” 通常专指博弈论专家们称为有完整信息的、确定性的、轮流行动的、两个游戏者的零和游戏&#xff08;如国际象棋)。术语中&#xff0c;这是指在确定的、完全可观察的环境中两个 Agent必须轮流行动&#xff0c;在游戏结束时效用值总是相等并…

Python 进阶(十九):解析命令行参数(argparse 模块)

大家好&#xff0c;我是水滴~~ 当处理命令行参数时&#xff0c;Python 的 argparse 模块是一个强大而灵活的工具。它提供了一个简单且一致的方式来定义命令行参数、选项和子命令&#xff0c;并帮助你解析和验证用户提供的输入。本教程将详细介绍 argparse 模块的使用方法和常见…

Ansys电力变压器解决方案

电力变压器设计挑战 目前面临的挑战&#xff1a; 1、磁场 • 非线性材料 • 涡流电流 • 磁场随时间的变化 • 瞬态激励源下的磁场变化 • 空间磁场分布 2、电场 • 介电常数的变化 • 电极的尺寸和形状 • 空间电场分布 变压器的两个类别 变压器可以分为两类进行F…

springboot项目中引入Xxl-Job并部署和使用

目录 模块划分 配置调度中心 配置执行器 添加执行器 写一个简单的定时任务 XxlJobHelper xxl-job是分布式任务调度平台&#xff0c;部署为独立的调度服务平台 github地址&#xff1a;xuxueli/xxl-job: A distributed task scheduling framework.&#xff08;分布式任务调度…

视频怎么去水印?这三款工具助你轻松搞定

在视频处理的过程中&#xff0c;水印常常成为我们的一大难题。它不仅影响了视频的美观度&#xff0c;还可能涉及版权问题。那么&#xff0c;如何高效去除视频中的水印呢&#xff1f;接下来&#xff0c;我将为大家推荐三款国内外备受好评的视频去水印工具&#xff1a;水印云、In…

Jmeter性能测试(五)

一、Jmeter参数化常用方式 1、CSV 数据文件设置 2、查询数据库(JDBC Connection Configuration) 二、CSV 数据文件设置 1、准备一个txt文件(不需要写表头&#xff0c;直接写你要用的数据就行了&#xff0c;多个字段用英文逗号隔开) 2、添加一个CSV 数据文件设置(放全局最上…

RabbitMQ基础入门

初识MQ 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&#xff0c;但是你却不能跟多个人同…

栈的2道面试题【有效的括号】【用栈实现队列】

栈的面试题&#xff1a; 1.有效的括号 题目&#xff1a; 有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合…

560. 和为 K 的子数组 974. 和可被 K 整除的子数组 【前缀和】

题目链接 ​​​​​​​974. 和可被 K 整除的子数组 560. 和为 K 的子数组 今天刷题的时候&#xff0c;刷了这两题&#xff0c;感觉挺有意思的。代码写起来挺简单的&#xff0c;但是思路和其中的细节以及涉及到的知识点确实让我挺意外的。这里写个博客解析一波&#xff0c;也是…

Python自动化下载指定公开页面文件

示例代码如下&#xff0c;但你拿到本地之需要做两件事才能运行 from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys import time# 设置Se…

计算机组成原理(超详解!!) 第七节 中央处理器(上)

1.CPU的功能和组成 CPU的功能&#xff1a; 指令控制&#xff1a;程序的顺序控制。 操作控制&#xff1a;管理并产生每条指令的操作信号&#xff0c;并把它们送到相应部件&#xff0c;控制这些部件按要求进行动作。 时间控制&#xff1a;对各种操作实施…

Day_3

1. HttpClient HttpClient是Apache的一个子项目&#xff0c;是高效的、功能丰富的支持HTTP协议的客户端编程工具包 作用&#xff1a;发送HTTP请求&#xff0c; 接受相应数据 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>…

controlnet的preprocessor类型

GitHub - huggingface/controlnet_auxContribute to huggingface/controlnet_aux development by creating an account on GitHub.https://github.com/huggingface/controlnet_aux/https://huggingface.co/lllyasviel/sd_control_collection

智慧监控 高效运维

随着企业IT建设的不断深入和完善&#xff0c;IT管理的重要性逐渐被重视&#xff0c;打通数据割裂&#xff0c;使业务更加充分融合。亟需一套统一的平台来实现跨品牌跨设备类型的集中监控和管理。 LinkSLA带外监控平台&#xff0c;不仅适用于大规模或超大规模的运维场景&#x…

Spring MVC(一)

1 Spring MVC概述 我们在之前学习Servlet的时候&#xff0c;认识了在WEB开发中MVC设计模式&#xff0c;其最为经典的设计就是&#xff0c;通过控制器&#xff08;Controller&#xff09;分离模型&#xff08;Model&#xff09;和视图&#xff08;View&#xff09;。在具体的WEB…

Redis进阶学习

Redis进阶学习 一、Redis事务1.2 Redis监控1.3 Jedis连接1.4 SpringBoot整合1.5 自定义RedisTemple1.6 Redis.conf详解 二、 Redis持久化2.1 RDB2.2 AOF进程 三、Redis发布订阅3.1 Redis主从复制3.2 集群环境配置3.3、复制原理3.4、宕机后主动变为主机3.5、哨兵模式 四、Redis缓…

2024年大数据与艺术设计国际学术会议(ICBDAD 2024)

2024年大数据与艺术设计国际学术会议(ICBDAD 2024) 2024 International Conference on Big Data and Art Design 一、【会议简介】 2024年大数据与艺术设计国际学术会议&#xff0c;听起来好像两个完全不相关的领域&#xff0c;却意外地融合在了一起。 在这个会议上&#xff0c…

el-carousel走马灯页数回到第一页

我的走马灯是在一个弹窗里,包裹着一些button,切换到下一页时 关闭弹窗再打开弹窗还显示的是上次第二页位置 领导很不满意 1. 2.写在你打开弹窗或者关闭弹窗的位置 this.$refs.carousel && (this.$refs.carousel.activeIndex 0); 解释一下: this.$refs.carousel: thi…