Att fixa dynamiska sökvägar i en resurs är lätt det är bara att göra regga resursen Det är nog ganska kört; WebResource() är nog bara lite godis, ingen .net-kod Jag behöver ytterligare info för att bättre kunna hjälpa dig... Jag har ju gjort en gymt mycket snyggare kontroll än vad han har gjort.. Hans kräver att du manellt lägger in script och css på sidna. Min kontroll ser till att fixa det själv ;) "överföra från mina properties till javascripten"Exekvera C# kod i resurs
[assembly: WebResource("WebControls.css.lightbox.css", "text/css", PerformSubstitution = true)]
och sedan i resursfilen använda <%=%> taggar...
#prevLink:hover, #prevLink:visited:hover { background: url('<%=WebResource("WebControls.images.prev.gif")%>') left 15% no-repeat; }
men det är bara %=WebResource()&>
som funkar. Vanlig C# kod exekverar inte typ <%= 7%> så tycker man det borde bytas ut mot 7 men resultatet blir <%= 7%>. Går detta att göra?
Vad jag vill göra är att vissa properties i kontrollen som registrerar resurserna ska renderas i javakod / css för att användaren av kontrollen lätt ska kunna ändra på kontrollens beteende...Sv: Exekvera C# kod i resurs
Sv: Exekvera C# kod i resurs - definiera problemet ytterligare
Jag chansar dock lite och kommer med några förslag för att försöka ringa in området...
Jag ser att du håller på med lightbox....
Här kommer en svensk artikel om hur göra en kontroll med egenskaper...för lightbox
http://andersjonsson.blogspot.com/2008/05/lightbox-i-aspnet-kontroll.html
Där ser du hur man kan använda kontrollegenskaper för att sedan rendera ut olika värden beroende på egenskaperna. För att slippa mata in en massa egenskaper som man oftast använder så sätter man defaultväden för dessa... "Favour convention over configuration"
Dvs man använder egenskaper för sin kontroll ist för dynamiska resursdefinitioner.
[Som parantes]
Hur bra html, css du renderar beror på dina kunskaper som webutvecklare och din målgrupp/syfte med sidan. Tex skulle jag personligen undvika <b> som artikelförfattaren använt.
Själv skulle jag använda motsv. CSSClass egenskaper alt. göra en templated kontroll så man får mer exakt kontroll på den html som produceras.Sv:Exekvera C# kod i resurs - definiera problemet ytterligare
Mitt problem är att lightbox scripten har vissa variabler som jag vill överföra från mina properties till javascripten..
Min kod
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
namespace Dac.View.Web.Controls
{
public class LightBoxLink : HyperLink
{
/// <summary>
/// If you want to group the image with other images use this property
/// </summary>
public string ImageGroup
{
get { return ViewState["imageGroup"] as string; }
set { ViewState["imageGroup"] = value; }
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
string effectsPath = Page.ClientScript.GetWebResourceUrl(typeof(LightBoxLink), "Dac.View.Web.Controls.js.effects.js");
string protoTypePath = Page.ClientScript.GetWebResourceUrl(typeof(LightBoxLink), "Dac.View.Web.Controls.js.prototype.js");
string lightboxPath = Page.ClientScript.GetWebResourceUrl(typeof(LightBoxLink), "Dac.View.Web.Controls.js.lightbox.js");
this.Page.ClientScript.RegisterClientScriptInclude("prototype.js", protoTypePath);
this.Page.ClientScript.RegisterClientScriptInclude("effects.js", effectsPath);
this.Page.ClientScript.RegisterClientScriptInclude("lightbox.js", lightboxPath);
HtmlHead header = this.Page.Header;
if(header != null)
{
if(header.FindControl("lbCss") == null)
{
HtmlGenericControl cssMetaData = new HtmlGenericControl("link");
cssMetaData.ID = "lbCss";
cssMetaData.Attributes.Add("rel", "stylesheet");
cssMetaData.Attributes.Add("href",
Page.ClientScript.GetWebResourceUrl(typeof(LightBoxLink),
"WebControls.css.lightbox.css"));
cssMetaData.Attributes.Add("type", "text/css");
cssMetaData.Attributes.Add("media", "screen");
header.Controls.Add(cssMetaData);
}
}
}
protected override void Render(HtmlTextWriter writer)
{
if(!string.IsNullOrEmpty(ImageGroup))
writer.AddAttribute("rel", string.Format("lightbox[{0}]", ImageGroup));
base.Render(writer);
}
}
}
Överför egenskapsvärden till javascript mha initierare...
> tycker det låter som att du skulle kunna stoppa in dessa värden till en initierare för ditt/dina javascript
Dvs ett funktionsanrop med inparametrar för de värden som du vill skicka in (de som kom från egenskaperna)
Detta funktionsanrop anropar ditt/dina javascript med dessa värden.