سحب صورة ديناميكية في عنصر تحكم بناءً على عنوان URL باستخدام C# وASP.net

StackOverflow https://stackoverflow.com/questions/116869

  •  02-07-2019
  •  | 
  •  

سؤال

أعلم أن هذا سؤال غبي.لسبب ما ذهني فارغ في هذا الشأن.أيه أفكار؟

أسف، كان يجب أن أكون أكثر وضوحا.

باستخدام أ HtmlGenericControl لسحب وصف الرابط وكذلك الصورة.

 private void InternalCreateChildControls()
    {
        if (this.DataItem != null && this.Relationships.Count > 0)
        {
            HtmlGenericControl fieldset = new HtmlGenericControl("fieldset");
            this.Controls.Add(fieldset);
            HtmlGenericControl legend = new HtmlGenericControl("legend");
            legend.InnerText = this.Caption;
            fieldset.Controls.Add(legend);

            HtmlGenericControl listControl = new HtmlGenericControl("ul");
            fieldset.Controls.Add(listControl);

            for (int i = 0; i < this.Relationships.Count; i++)
            {
                CatalogRelationshipsDataSet.CatalogRelationship relationship =
                    this.Relationships[i];

                HtmlGenericControl listItem = new HtmlGenericControl("li");
                listControl.Controls.Add(listItem);

                RelatedItemsContainer container = new RelatedItemsContainer(relationship);
                listItem.Controls.Add(container);

                Image Image = new Image();
                Image.ImageUrl = relationship.DisplayName;




                LinkButton link = new LinkButton();
                link.Text = relationship.DisplayName;



               ///ToDO Add Image or Image and description
                link.CommandName = "Redirect";
                container.Controls.Add(link);
            }
        }
    }

ولا أطلب من أحد أن يفعل هذا من أجلي مجرد إشارة أو فكرة.

شكرا -الإحباط المفرط والشعور بالتواضع.

هل كانت مفيدة؟

المحلول

أفترض أنك تريد إنشاء صورة بشكل ديناميكي بناءً على عنوان URL.

ما أفعله عادةً هو إنشاء HTTPHandler خفيف الوزن جدًا لخدمة الصور:

using System;
using System.Web;

namespace Example
{  
    public class GetImage : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            if (context.Request.QueryString("id") != null)
            {
                // Code that uses System.Drawing to construct the image
                // ...
                context.Response.ContentType = "image/pjpeg";
                context.Response.BinaryWrite(Image);
                context.Response.End();
            }
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

يمكنك الرجوع إلى هذا مباشرة في علامة img الخاصة بك:

<img src="GetImage.ashx?id=111"/>

أو يمكنك أيضًا إنشاء عنصر تحكم في الخادم يقوم بذلك نيابةً عنك:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Example.WebControl
{

    [ToolboxData("<{0}:DynamicImageCreator runat=server></{0}:DynamicImageCreator>")]
    public class DynamicImageCreator : Control
    {

        public int Id
        {
            get
            {
                if (ViewState["Id" + this.ID] == null)
                    return 0;
                else
                    return ViewState["Id"];
            }
            set
            {
                ViewState["Id" + this.ID] = value;
            }
        }

        protected override void RenderContents(HtmlTextWriter output)
        {
            output.Write("<img src='getImage.ashx?id=" + this.Id + "'/>");
            base.RenderContents(output);
        }
    }
}

يمكن استخدام هذا مثل

<cc:DDynamicImageCreator id="db1" Id="123" runat="server/>

نصائح أخرى

تحقق من الجديد التحكم في الصورة الديناميكية تم إصداره في CodePlex بواسطة فريق ASP.NET.

هذا نوع من السؤال الرهيب.أعني أن .NET يحتوي على عنصر تحكم في الصورة حيث يمكنك ضبط المصدر على أي شيء تريده.لست متأكدًا مما تريد مناقشته.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top