09 Nov 2017
This post shows you how you can get to the IPublishedContent item from a Content Pick Macro Parameter in Umbraco. It is a guest post by Nisreen Almasri from Sweden.
I feel my question is silly and can be answered straightforward but after googling and searching here and there, discover that nothing is silly with Umbraco:)
I have a login form and many types of members, according to the type of member (which group he belongs to) must be forwarded to a specific page. and because we have a multi-language website so I can use hardcoded URLs because the name of the page varies.
to summarize that, I have all related pages as macro parameters (content picker) but I need to reach the node id for each to use this code
Response.Redirect(library.NiceUrl(Convert.ToInt32(Id)));
I used this at the beginning
var urlDownload = Model.MacroParameters["urlDownload"];
But it returns the UDI, not the node ID, because my version of Umbraco has property value converters enabled.
"umb://document/f875c2c828d04a2dbdb2dcf80d841a9f"
Finally, the solution was using this piece of code:
var contDownload = Umbraco.TypedContent(urlDownload);
and I could reach the id easily...
Response.Redirect(library.NiceUrl(Convert.ToInt32(contDownload.Id)));
Here is the whole code:
@{ var urlDownload = Model.MacroParameters["urlDownload"]; var urlSale = Model.MacroParameters["urlSale"]; var urlExport = Model.MacroParameters["urlExport"]; var urlAD = Model.MacroParameters["urlAD"];
var contDownload = Umbraco.TypedContent(urlDownload); var contSale = Umbraco.TypedContent(urlSale); var contExport = Umbraco.TypedContent(urlExport); var contAD = Umbraco.TypedContent(urlAD);
var currentMember = User.Identity.Name;
var t = Roles.GetRolesForUser(currentMember).FirstOrDefault();
if (Members.GetCurrentLoginStatus().IsLoggedIn && Request.UrlReferrer != null) { switch (t) { case "Download": Response.Redirect(library.NiceUrl(Convert.ToInt32(contDownload.Id))); break; case "Sale": Response.Redirect(library.NiceUrl(Convert.ToInt32(contSale.Id))); break; case "Exporting": Response.Redirect(library.NiceUrl(Convert.ToInt32(contExport.Id))); break; default: Response.Redirect(library.NiceUrl(Convert.ToInt32(contAD.Id))); break; } } }