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.

The scenario

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)));

What I tried at first

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"

The solution

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)));

Final code

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;         }     } }

Want to thank me?

If I've helped you out and you want to thank me, why not buy me a coffee?

Buy me a coffee

About the author

Nisreen Almasri

Nisreen is a Software and Umbraco developer at Empir Group AB in Sweden

Related Posts

How to animate tree icons in Umbraco v8

This post shows you how you can change the colour and animate tree icons in Umbraco based on a prope…

Read Post

How to solve the error assets file project.assets.json not found in Visual Studio

This post tells you how to solve the error assets file project.assets.json not found in Visual Studi…

Read Post

Code to help you debug an umbraco issue on a remote site

This post gives you some razor code to help you see the values of the IPublishedContent item's prope…

Read Post

How to fix the 403 error on preview in Umbraco after upgrading

This post shows you how to fix the 403 error on preview after you have upgraded it.

Read Post