cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk memindahkan id elemen tertentu ke bahagian belakang selepas acara klik?

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粉738046172P粉738046172465 hari yang lalu656

membalas semua(1)saya akan balas

  • P粉974462439

    P粉9744624392023-09-14 11:45:07

    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

    balas
    0
  • Batalbalas