Bagaimana untuk memindahkan id elemen tertentu ke bahagian belakang selepas acara klik?
P粉738046172
P粉738046172 2023-09-13 15:29:27
0
1
624

Saya sedang menulis projek saya pada beberapa halaman yang bertanggungjawab untuk menyenaraikan filem dan selepas mengklik padanya ia akan memautkan anda ke halaman di mana anda boleh melihat semua maklumat tentang filem tertentu yang anda klik, Sekarang saya menggunakan SQL pada saya pangkalan data, salah satu idea saya ialah memindahkan id elemen yang ditekan selepas saya menetapkan id yang betul kepada hiperpautan yang diklik berdasarkan filem yang anda klik. Soalan saya ialah bagaimana saya boleh mendapatkan id kandungan yang diklik, memindahkannya ke bahagian belakang supaya saya boleh menarik maklumat yang betul dari pangkalan data berdasarkan id yang sama. Ini kod saya setakat ini:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace WebProject
{
    public partial class movie : System.Web.UI.Page
    {
        public string movieLister = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            string fName = "contentDB.mdf";
            string tableName = "moviesTbl";
            string sqlSelect = $"select * from {tableName}";
            DataTable table = Helper.ExecuteDataTable(fName, sqlSelect);
            int length = table.Rows.Count;
            for(int i = 0; i < length; i++)
            {
                movieLister += $"<a href='moviePage.aspx' id='{table.Rows[i]["MOVIEID"]}'><div class='movie-container' ><img src='{table.Rows[i]["movieImageFile"]}'/><div><img src='favourites.png' /> {table.Rows[i]["rating"]}</div><p>{table.Rows[i]["movieName"]}</p></div></a>";
            }
            
        }
    }
}

Kod ini pada asasnya mengambil senarai filem dan memberikan ID yang betul berkaitan dengan penerangan filem dan menghantarnya kembali ke halaman, satu-satunya perkara yang saya perlu tahu ialah tindakan yang perlu dilakukan untuk mendapatkan ID filem yang diklik supaya saya Keupayaan untuk memindahkan maklumat yang betul dari pangkalan data ke halaman.

Saya telah mencuba menggunakan pelbagai sumber tetapi tiada satu pun daripada mereka nampaknya membantu.

P粉738046172
P粉738046172

membalas semua(1)
P粉974462439

Memandangkan anda tidak menerbitkan halaman tersebut, saya mengandaikan anda hanya mengeluarkan movieLister 字符串 {%= movieLister %} 这应该生成 a teg dalam format yang sama yang anda gunakan dalam gelung for anda, seperti ini:

<a href='moviePage.aspx' id='{table.Rows[i]["MOVIEID"]}'>
  <div class='movie-container' >
    <img src='{table.Rows[i]["movieImageFile"]}'/>
  <div>
  <img src='favourites.png' /> {table.Rows[i]["rating"]}
</div>
<p>{table.Rows[i]["movieName"]}</p>
</div>
</a>

Terdapat 2 isu dengan HTML ini untuk perkara yang anda mahukan

  1. Ada dua penamat div tag tanpa permulaan. Ini mungkin salah taip, tetapi akan menyebabkan enjin pemaparan penyemak imbas menjadi benar-benar kucar-kacir (dan mungkin membawa kepada penyerlah sintaks StackOverflow)
  2. Walaupun setiap pautan mempunyai atribut id 属性,但该信息不是您单击链接时将加载的 URL 的一部分,因为它不在 href 中 yang menunjuk kepada ID filem

Untuk menyelesaikan kedua-dua masalah, saya akan mengemas kini html output supaya kelihatan seperti ini:

<a href='moviePage.aspx?id={table.Rows[i]["MOVIEID"]}'> <!-- Update this href to use the id as a query parameter -->
  <div class='movie-container' >
    <img src='{table.Rows[i]["movieImageFile"]}'/>
  <div>
  <img src='favourites.png' /> {table.Rows[i]["rating"]}
<div> <!-- update this tag -->
<p>{table.Rows[i]["movieName"]}</p>
</div>
</a>

Anda sepatutnya boleh mengemas kini pengendali halaman seperti ini (perhatikan saya menggunakan MacBook dan tidak dapat mengesahkan kod ASPX ini kerana .NET Core/5+ hanya menggunakan Razor Pages):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;

namespace WebProject
{
    public partial class movie : System.Web.UI.Page
    {
        public string movieLister = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            string id = Request["id"];
            string fName = "contentDB.mdf";
            string tableName = "moviesTbl";

            string sqlSelect = $"select * from {tableName}";
            if (id.Length() > 0)
            {
                sqlSelect += $" where id = {id}"
            }

            DataTable table = Helper.ExecuteDataTable(fName, sqlSelect);
            int length = table.Rows.Count;
            for(int i = 0; i < length; i++)
            {
                movieLister += $"<a href='moviePage.aspx?id={table.Rows[i]["MOVIEID"]}'><div class='movie-container' ><img src='{table.Rows[i]["movieImageFile"]}'/><div><img src='favourites.png' /> {table.Rows[i]["rating"]}<div><p>{table.Rows[i]["movieName"]}</p></div></a>";
            }
            
        }
    }
}

Arahan Keselamatan Penting

Kod di atas hanya menunjukkan cara mendapatkan ID. Dalam pengeluaran, saya amat mengesyorkan agar anda menukarnya kepada int atau parameterkannya untuk mengelakkan serangan suntikan SQL yang sangat mudah.

Saya juga amat mengesyorkan untuk berhijrah ke halaman .NET Core/5+ dan Razor kerana ia memudahkan untuk bertanya soalan seperti ini di sini dan di Google kerana ia serba lengkap dan lebih mudah untuk menyiarkan kod sumber penuh. Jika anda ingin mengetahui tentang halaman Razor, Tim Corey di YouTube mempunyai video yang hebat untuk setiap peringkat

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan