مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

moonfa1392

عضویت از 1394/08/17

معایب استفاده از یوزرکنترل در صفحات اصلی سایت

  • سه شنبه 21 شهریور 1396
  • 23:19
تشکر میکنم

سلام وقتتون بخیر

من توی پنل مدیریت سایت از یوزرکنترل استفاده می کنم هم سرعت خوبی داره هم کار باهاش خیلی راحت تر از صفحات aspx هست

به این صورت کد رو نوشتم:

public void loadcontrol()
    {
        if (Request.QueryString["id"] != null)
        {
            if (Request.QueryString["id"].ToString() != "")
            {
                string text = string.Format("select * from tbl_controls where id={0}", Request.QueryString["id"].ToString());
                DataTable dt = new DataTable();
                DAL run = new DAL();
                dt = run.ExecuteQuery(text);
                if (dt.Rows.Count > 0)
                {
                    UserControl uc = (UserControl)Page.LoadControl("~/management/controls/" + dt.Rows[0]["Name"] + ".ascx");
                    container.Controls.Add(uc);
                }
            }
        }
    }

آدرس صفحاتم به این صورت میشه panel.aspx?id=1 و ... فقط عدد id متغیر هست

حالا میخوام بدونم اگر منو و فوتر و بخش هایی که همیشه توی مسترپیج قرار میدم رو توی یک default.aspx بریزم و وسط صفحه رو یک div بذارم با id container و خلاصه تمام مراحل توی کد رو انجام بدم و سایر صفحات رو داخل یوزرکنترل بریزم که آدرس دهی ها به شرح زیر بشه:

site.com/default.aspx?id=7

site.com/default.aspx?id=5

site.com/default.aspx?id=2

چه معایبی داره؟ آیا به سئو آسیب میزنه؟ امنیت سایت رو پایین میاره؟ یا ...

استفاده از این روش اصولی هست یا خیر؟

ممنون میشم توضیحاتی در این باره بدید

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 22 شهریور 1396
  • 09:43

من اصلا منظورتون رو متوجه نشدم

بریزید وسط صفحه ؟؟؟

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • چهارشنبه 22 شهریور 1396
  • 16:49

ببینید استاد کلا کار یوزرکنترل مگه همین نیست؟

مسترپیج محتوای مشترک صفحات رو در بر میگیره، و WEBFORM هایی که از مسترپیج پیروی می کنن هم حتی اگر محتوایی نداشته باشن، محتوای مسترپیج رو نمایش میدن!

یوزرکنترل هم اینجا حکم WEBFORM رو داره و خود WEBFORM حکم مسترپیج رو داره!

این جدول دیتابیس منه:

توی صفحه panel.aspx هم یک هدر و یک منو و یک فوتر دارم + یک div که خالی هست (درواقع باید محتوای صفحه رو در بر بگیره) و آی دیش container هست و code behind هم این تابع رو نوشتم:

public void loadcontrol()
    {
        if (Request.QueryString["id"] != null)
        {
            if (Request.QueryString["id"].ToString() != "")
            {
                string text = string.Format("select * from tbl_controls where id={0}", Request.QueryString["id"].ToString());
                DataTable dt = new DataTable();
                DAL run = new DAL();
                dt = run.ExecuteQuery(text);
                if (dt.Rows.Count > 0)
                {
                    UserControl uc = (UserControl)Page.LoadControl("~/management/controls/" + dt.Rows[0]["Name"] + ".ascx");
                    container.Controls.Add(uc);
                }
            }
        }
    }

حالا زمانی که توی پوشه controls در پروژه یک یوزرکنترل باز کنم و محتوایی رو داخلش بریزم، و در جدول دیتابیس ردیف ها رو به این صورت ایجاد کنم:

آدرس هر صفحه به این صورت میشه:

panel.aspx?id=1
panel.aspx?id=2
panel.aspx?id=3

و به همین ترتیب شماره هر id رو توی آدرس بذاریم، محتوای همون یوزرکنترل رومیگیره! و در code behind یوزرکنترل ها هم این کد رو می نویسم تا عنوان title هر کدومشون رو هم از دیتابیس بخونه:

protected void Page_Load(object sender, EventArgs e)
    {
        string constring = "Data Source=DESKTOP-NBFMKSL;Initial Catalog=k1inusa.com; Trusted_Connection=True;";
        using (SqlConnection con = new SqlConnection(constring))
        {
            using (SqlCommand cmd = new SqlCommand(string.Format("Select title From tbl_controls Where id={0} ", Request.QueryString["id"]), con))
            {
                cmd.CommandType = CommandType.Text;

                con.Open();
                Page.Title = cmd.ExecuteScalar().ToString();

                con.Close();
            }
        }
    }

این روش برای پنل مدیریت خیلی خوبه، هم اینکه سرعتش از خود صفحات webform و masterpage بالا تره هم اینکه آدرس دهی ها رو برای برنامه نویس راحت تر میکنه، کاربر هم که چه بهتر آدرس صفحات مختلف پنل براش ناخوانا باشه و نتونه حفظ کنه یا بفهمه از چه استانداردی پیروی می کنه!!!

اما سوال اصلی من این بود، که این روش رواگر به غیر از پنل، برای صفحات اصلی سایت هم اسفاده کنیم چه معایبی داره؟ به سئو ضرر میزنه؟ یا کلا چه معایبی میتونه داشته باشه!!

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • چهارشنبه 22 شهریور 1396
  • 16:56

روش مناسبی هست و تقریبا معایبی نداره

همین برنامه نویسان تمامی قسمت ها بخش بندی شده و از PartialView که معادل همان یوزر کنترل است استفاده شده

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • چهارشنبه 22 شهریور 1396
  • 17:22

خیلی ممنونم از پاسختون

کاربر سایت

f.mirshekar

عضویت از 1393/07/22

  • شنبه 25 شهریور 1396
  • 16:17

فقط قسمت کد هاتون رو درست کنید

 string text = string.Format("select * from tbl_controls where id={0}", Request.QueryString["id"].ToString());

درباره sql injection تحقیق کنید

این روش بدترین روش کد خوندن از دیتابیس هست

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)