Frage

Ich habe dies vor mit einer Web-Kontrolle durchgeführt, aber ich kann nicht scheinen, um es mit einem sublayout zu arbeiten. Auf der Präsentation Details zu einem bestimmten Element bin Zuweisung ich meine Sublayout und dann in den zusätzlichen Parameter Abschnitt Angabe des Parameters. Hier ist der Code, der für meine sublayout in dem Code-Behind ist. Wenn ich den Debugger ausführen, RenderPageTitle ist nur null.

public partial class PageContent : System.Web.UI.UserControl
{
    public String RenderPageTitle { get; set; }
    protected void Page_Load(object sender, EventArgs e)
    {
        if (RenderPageTitle.ToLower().Equals("false"))
        {
            TitleFieldRenderer.Visible = false;
        }
    }
}
War es hilfreich?

Lösung

finden Sie auf diesem Blog-Eintrag .

Für sitecore6, in der CS-Datei:

string rawParameters = this.Parameters;
NameValueCollection parameters = Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters);

oder in ASCX-Datei:

string rawParameters = Attributes["sc_parameters"];
NameValueCollection parameters = Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters);

Andere Tipps

Es kann etwas besserer Weg, dies zu tun. Es ist schwer zu sagen.

Die Parameter werden an einem sublayout URL codiert (HttpUtility.UrlEncode oder ähnliches) und miteinander verbunden, wie ein Abfragezeichenfolgeflag, und dann in dem „sc_parameters“ Attribut der Kontrolle gestellt.

So, wie chiesa sagte in einer Web-Benutzersteuerung (das ist, was das Blog von ASCX-Datei gemeint) Sie können dies tun:

string rawParameters = Attributes["sc_parameters"];
NameValueCollection parameters = 
  Sitecore.Web.WebUtil.ParseUrlParameters(rawParameters);

Und dann haben Sie die Parameter als ein Wörterbuch von Strings. Allerdings sind diese noch codiert werden, so dass, wenn sie etwas anderes als Buchstaben und Zahlen enthalten, werden Sie wahrscheinlich so etwas wie HttpUtility.UrlDecode verwenden möchten, um sie zu beheben.

string color_scheme = HttpUtility.UrlDecode(parameters["ColorScheme"]);
int ash_diffuser_id = // Could have a + sign prepended or something.
  HttpUtility.UrlDecode(Int32.Parse(parameters["AshDiffuserID"]));

Sie können, indem er erklärt _Param Variable mit Namevaluecollection Datentyp sublayout ‚s Parameterwert haben und beziehen tem den spezifischen Parameterwert zu erhalten, indem der Schlüsselwert übergeben. Auf diese Weise diese gemeinsame Funktion in Helfer-Datei befinden kann und wiederverwendet werden kann.

Hier ist der Code-Schnipsel.

// All known parameters passed to the sublayout.
static NameValueCollection _params = null;

/// <summary>
/// Return the value of a specific parameter.
/// </summary>
/// <param name="key">Parameter name.</param>
/// <returns>Value of specified parameter.</returns>
public static string GetParam(string key)
{
    key.Trim().ToLower();
    string result = _params[key.Trim().ToLower()];

    if (String.IsNullOrEmpty(result))
     {
          result = String.Empty;
     }

    return (System.Web.HttpUtility.UrlDecode(result));
}

Sie können den Wert des Parameters, die Sie in der sublayout einfach vorbei die Schlüsselnamen des Parameters als Argument dieser Funktion übergeben.

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top