C1 использует Webforms для размещения своего контента, поэтому вы ничего не можете сделать, что вы делаете сейчас в своем проекте Webforms.Вы можете использовать Webforms Masterpages в качестве шаблонов для своего контента, и маршрутизация полностью поддерживается, либо путем добавления столько пользовательских маршрутов, сколько вы хотите, либо просто переопределяя маршрут по умолчанию на странице c1.Или полагаясь на PathInfo Api , где непревзойденные части URL-адреса будут доступны для использования на странице, которая соответствует максимально длинной части URL-адреса.Вы также можете использовать Razor (.cshtml) в C1, если вам нравится этот новый синтаксис от Microsoft.
Вы также можете изменить ситуацию и выбрать визуализацию контента из C1 на свой собственныйстраницы.Этот код показывает, как стандартная страница WebForm .aspx может использоваться для отображения содержимого с определенной страницы в C1
public class BaseContentTeaserPage : Page
{
private Guid _pageId;
protected PlaceHolder plc;
protected override void OnPreInit(EventArgs e)
{
_pageId = Guid.Parse(Request.QueryString["pageId"]);
using (new DataScope(PublicationScope.Published, new CultureInfo("en-GB")))
{
using (var data = new DataConnection())
{
PageRenderer.CurrentPage = data.Get<IPage>().Single(p => p.Id == _pageId);
var urlData = new PageUrlData(PageRenderer.CurrentPage);
urlData.PathInfo = Request.QueryString["pathInfo"];
Context.Items["C1_PageUrl"] = urlData;
}
}
base.OnPreInit(e);
}
protected override void OnLoad(EventArgs e)
{
using (new DataScope(PublicationScope.Published, new CultureInfo("en-GB")))
{
var content = DataFacade.GetData<IPagePlaceholderContent>().Single(p => p.PageId == _pageId);
var helper = new PageRendererHelper();
var mapper = (IXElementToControlMapper)helper.FunctionContext.XEmbedableMapper;
var doc = helper.RenderDocument(content);
var body = PageRendererHelper.GetDocumentPart(doc, "body");
addNodesAsControls(body.Nodes(), plc, mapper);
if (Page.Header != null)
{
var head = PageRendererHelper.GetDocumentPart(doc, "head");
if (head != null)
{
addNodesAsControls(head.Nodes(), Page.Header, mapper);
}
}
}
base.OnLoad(e);
}
private static void addNodesAsControls(IEnumerable<XNode> nodes, Control parent, IXElementToControlMapper mapper)
{
foreach (var node in nodes)
{
var c = node.AsAspNetControl(mapper);
parent.Controls.Add(c);
}
}
protected override void Render(HtmlTextWriter writer)
{
var markupBuilder = new StringBuilder();
using (var sw = new StringWriter(markupBuilder))
{
base.Render(new HtmlTextWriter(sw));
}
string xhtml = markupBuilder.ToString();
using (Profiler.Measure("Changing 'internal' page urls to 'public'"))
{
xhtml = PageUrlHelper.ChangeRenderingPageUrlsToPublic(xhtml);
}
using (Profiler.Measure("Changing 'internal' media urls to 'public'"))
{
xhtml = MediaUrlHelper.ChangeInternalMediaUrlsToPublic(xhtml);
}
writer.Write(xhtml);
}
}
.