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

news2024/11/20 6:18:11

目录

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 对象用于构建书籍列表 HTML
        StringBuilder 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.coloradmin.cn/o/1655118.html

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

相关文章

python数据分析——pandas DataFrame基础知识1

参考资料&#xff1a;活用pandas库 1、加载数据集 通常调用read_csv函数来加载CSV数据文件。若是.tsv文件也是用read_csv函数。 # 导入库 import pandas as pd # 默认情况下&#xff0c;read_csv函数会读取逗号分隔文件 # Gapminder数据使用制表符分隔 # 可以吧sep参数设置为…

计算机组成原理网课笔记

无符号整数的表示与运算 带符号整数的表示与运算 原反补码的特性对比 移码

推荐非常方便的初始配置nginx的开源工具

官网 https://www.digitalocean.com/community/tools/nginx?global.app.langzhCN直接复制base64字符串在 /etc/nginx 目录执行&#xff0c;会自动生成配置文件&#xff0c;最后执行 使用tar解压新的压缩配置 tar -xzvf nginxconfig.io-xxx.com.tar.gz | xargs chmod 0644在…

中国结(科普)

中国结是一种手工编织工艺品&#xff0c;它身上所显示的情致与智慧正是汉族古老文明中的一个侧面。 [1]它原本是由旧石器时代的缝衣打结&#xff0c;后推展至汉朝的仪礼记事&#xff0c;再演变成今日的装饰手艺。周朝人随身的佩戴玉常以中国结为装饰&#xff0c;而战国时代的铜…

Golang | Leetcode Golang题解之第78题子集

题目&#xff1a; 题解&#xff1a; func subsets(nums []int) (ans [][]int) {set : []int{}var dfs func(int)dfs func(cur int) {if cur len(nums) {ans append(ans, append([]int(nil), set...))return}set append(set, nums[cur])dfs(cur 1)set set[:len(set)-1]df…

Java 11 到 Java 8 的兼容性转换

Java 11 到 Java 8 的兼容性转换 欲倚绿窗伴卿卿&#xff0c;颇悔今生误道行。有心持钵丛林去&#xff0c;又负美人一片情。 静坐修观法眼开&#xff0c;祈求三宝降灵台&#xff0c;观中诸圣何曾见&#xff1f;不请情人却自来。 入山投谒得道僧&#xff0c;求教上师说因明。争奈…

从离线到实时:无锡锡商银行基于 Apache Doris 的数据仓库演进实践

作者&#xff1a;武基鹏&#xff0c;无锡锡商银行 大数据技术经理 编辑整理&#xff1a;SelectDB 技术团队 导读&#xff1a;为实现数据资产的价值转化以及全面数字化、智能化的风险管理&#xff0c;无锡锡商银行大数据平台经历从 Hive 离线数据仓库到 Apache Doris 实时数据仓…

ifconfig命令找不到 command not found

问题 今天解决虚拟机的网络问题后&#xff0c;使用ifconfig发现报错命令未找到 解决方案 输入yum install ifconfi的程序安装包 yum install ifconfig 如果显示没有可用软件包 ifconfig&#xff0c;错误&#xff1a;。 就输入yum search ifconfig匹配安装包程序 yum searc…

数仓开发,分层(ods,dw,app层)

1、从数据源中导入源数据&#xff0c;到ODS表&#xff0c;作为事实表的数据 2、可以根据自己的开发设计&#xff0c;是否单独分支出来一个维度表&#xff0c;帮助和协助处理源数据表ODS层 和需求层ADS&#xff08;APP&#xff09;层 3、现在我们有了一个事实ODS层&#xff0…

力扣每日一题119:杨辉三角||

题目 简单 给定一个非负索引 rowIndex&#xff0c;返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: rowIndex 3 输出: [1,3,3,1]示例 2: 输入: rowIndex 0 输出: [1]示例 3: 输入: rowIndex 1 输出…

基于SSM的“小型企业人事管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“小型企业人事管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 登录界面 个人信息页面 用户打卡页面 扣…

C++贪心算法

关于string的系统函数&#xff01; &#xff08;注&#xff1a;以下函数只可用于string&#xff0c;不适用其他类型的变量&#xff09; ① a.size(); 这个系统函数是用来获取这个string变量的长度的&#xff0c;我们通常会新建一个变量来保存他&#xff0c;以便之后使用。 …

跨协议通讯无缝对接:Modbus-BACnet楼宇智能转换器深度解析

在现代化的建筑群里&#xff0c;智能楼宇管理系统如同神经系统&#xff0c;协调着各设备的运行。某大型商业综合体&#xff0c;集购物中心、办公区、酒店于一体&#xff0c;面对着来自不同供应商的设备&#xff0c;如何实现统一管理和高效通讯成了首要挑战。特别是其内部既有采…

区块链 | NFT 水印:Review on Watermarking Techniques(一)

&#x1f34d;原文&#xff1a;Review on Watermarking Techniques Aiming Authentication of Digital Image Artistic Works Minted as NFTs into Blockchains 1 应用于 NFT 的水印技术 常见的水印技术类型可以分为&#xff1a; 可见 v i s i b l e \mathsf{visible} visi…

STM32快速入门(串口传输之USART)

STM32快速入门&#xff08;串口传输之USART&#xff09; 前言 USART串口传输能实现信息在设备之间的点对点传输&#xff0c;支持单工、半双工、全全双工&#xff0c;一般是有三个引脚&#xff1a;TX、RX、SW_RX&#xff08;共地&#xff09;。不需要一根线来同步时钟。最大优…

C++ list介绍(迭代器失效)

一、常用接口 reverse逆置 sort排序&#xff08;默认升序&#xff09; 仿函数greater<int> merge合并&#xff0c;可以全部合并&#xff0c;也可以一部分合并 unique&#xff1a;去重&#xff08;先排序&#xff0c;再去重&#xff09; remove&#xff1a;删除e值&#…

Hive SQL Join连接操作用法详解

Hive SQL Join连接操作 1.Hive join语法规则 基本语法&#xff1a; SELECT column_list FROM table1 JOIN table2 ON table1.column_name table2.column_name;JOIN类型&#xff1a; 在JOIN语句中&#xff0c;你可以使用不同类型的JOIN操作&#xff0c;包括INNER JOIN、LEFT O…

水面垃圾清理机器人的视觉算法研究

卷积神经网络是一种分层的数据表示模型&#xff0c;通常由数据输入层、卷积层、池化层、 非线性激活函数、全连接层以及输出结果预测层等组成&#xff0c;其中卷积层、池化层和非线 性激活函数是卷积神经网络中的重要组成部分。此外&#xff0c;有些模型会增加其他的层(归一 化…

C#贪吃蛇

C#贪吃蛇 文章目录 Program.csText1Game.csISceneUpdate.csText2BeginScene.csBegionOrEndScene.csEndScene.csGameScene.csText3GameObject.csIDraw.csPosition.csText4Food.csSnakeBody.csWall.csText5Map.csText6Snake.csProgram.cs using 贪吃蛇.Text1;Game game = new Ga…

pinia持久化出现store和storage的数据不一致的问题

问题描述 突然发现menu的store异常&#xff0c;pinia中查看到store数据正确&#xff0c;但是localstorage中的数据始终没有同步&#xff0c;但user的store没问题&#xff0c;具体如下&#xff1a; menu的store&#xff1a; user的store&#xff1a; 问题原因 进入系统…