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?

About the author

Nisreen Almasri

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

Related Posts

Find out how my blog reached 1 million page views

In this post I will tell you how my blog reached 1 million page views.

Read Post

How to include scripts from partial views in MVC and Umbraco

This post will show you how you can include scripts from inside an MVC partial view rather than havi…

Read Post

How to fix the error "Authentication failed because the remote party has closed the transport stream"

This post will show you how to fix the error "Authentication failed because the remote party has clo…

Read Post

How to solve the error Could not load file or assembly System.Security.Principal.Windows

This post help you solve the error System.IO.FileNotFoundException Could not load file or assembly S…

Read Post