<reddot:cms><if><query valuea="Context:CurrentRenderMode" operator="==" valueb="Int:2"><htmltext> <%@ page language="C#" %> <%@ Register Src="~/UserControls/Search.ascx" TagName="Search" TagPrefix="uc" %> </htmltext></query></if></reddot:cms>
This example references a code behind file for a search used on the web server. It is placed in the top of every page instance created with this template. This way you only have to integrate the .NET reference once in each template. You can break it down to once per project if you use a container approach.
<body>
<div id="site">
<div id="header">
<reddot:cms><if><query valuea="Context:CurrentRenderMode" operator="==" valueb="Int:2"><htmltext>
<uc:Search ID="Search" runat="server"/>
</htmltext></query></if></reddot:cms>
This is the ASP.NET User Control for your search interface. Since you don’t run the search inside of your CMS project we have used a Render Tag to exclude this block from showing up within the CMS. If you want to be fancy you can put some placeholder content here by using a different Context:CurrentRenderMode block where you use valuea=”Context:CurrentRenderMode” operator=”<>” valueb=”Int:2″ to show HTML code only on the CMS server, you can read more about this here.
What do you get out of it? And How to change User Control values…
Read more »
We avoid putting “@ Register” tags into every template by registering tag prefixes globally in the web.config file. That way you can create a MySuchAndSuchUserControl content class and the content authors can plonk them wherever they like.
You can also create a “CS” variant for code-behind files which use FileRead render tags to pull their content in from a regular .net project. Combine with VSS and a build machine to ensure your CMS always has up to date code and you can use CMS elements in your C#!
User Controls are exactly the way we figured out to integrate ASP.NET into our RedDot projects as well!
Two more hints:
1. The page directive is unnecessary if you make C# the default instead of VB in the IIS ASP.NET configuration. Like this you avoid the limitation of only one page directive per ASPX file.
2. If your UC requires content/translation from within RedDot you could define public properties in your UC with getters and setters. You may then pass the content place holder to the UC like this:
<uc:Search ID=”Search” runat=”server” SubmitButtonCaption=”<%stf_submit_button_caption%>” />