Creating Markup Actions in Razor

Razor’s inline helpers allow you to create lambda expression that return markup (as a HelperResult).  However, there is no simple way to create a lambda expression that writes HTML directly to the page (instead of returning it).

In ASPX pages, one can simply put the beginning and end of a lambda expression in expression blocks, then put markup in the middle.

For example, this code creates a delegate that writes a <b> tag to the page:

<%
    Action pageWriter = () => {%><b>I'm from a lambda!</b><%};
    pageWriter();
    pageWriter();
    pageWriter();
%>

Calling the pageWriter delegate will write directly to the HTTP response stream.

By contrast, Razor inline expressions return their markup.  To do this in a Razor page, one would write

@{
    Func<object, HelperResult> htmlMaker
         = @<b>I'm from a lambda!</b>;
    @htmlMaker(null)    //Note @ sign
    @htmlMaker(null)    //Note @ sign
    @htmlMaker(null)    //Note @ sign
}

Calling htmlMaker without an @ sign will return HTML, but won’t write anything to the page.

When working with libraries designed for ASPX pages, it can be necessary to create ASPX-style inline helpers that write to the page instead of returning a value.  You can do that by creating an inline helper lambda and passing it to the Write method:

@{
    Action pageWriter = () => Write(new Func<object, HelperResult>(
         @<b>I'm from a lambda!</b>
    )(null));

    pageWriter();
    pageWriter();
    pageWriter();
}

Like the ASPX version, pageWriter now writes directly to the page and does not return anything.

This code can be made simpler by wrapping it in a separate method:

Action MakeAction(Func<object, HelperResult> inlineHelper) {
    return () => Write(inlineHelper(null));
}

This method takes an inline helper and returns an Action that writes the helper’s output to the page.  Since it needs to call the page’s Write method (to use the page’s output stream), this method must be defined in the WebPageBase instance, either in an @functions block or in a common base class.

Any code in the inline helper will execute each time the resulting Action is called.

It can be called like this:

@{
    Action pageWriter2 = MakeAction(@<b>I'm from a lambda!</b>);

    pageWriter();
    pageWriter();
    pageWriter();
}

This code is equivalent to the previous sample, but it’s much simpler.

One can also write write a version that takes a parameter:

Action<T> MakeAction<T>(Func<T, HelperResult> inlineHelper) {
    return param => Write(inlineHelper(param));
}
Note that the type parameter must be specified explicitly; C# does not infer type parameters from the method’s return type.

28 comments:

Thanks for this information. I found it very useful in coming up with my own solution.

Just to explain what I wanted to do, I wanted to pass around markup just as you would pass around variables of any other type. However, sometimes when you use variables within a markup block and that variable changes (for example during a for-loop), it prints the last value that the variable was assigned (as opposed to the value it held at the time).

Therefore what I did was to strictly evaluate the markup passed in.

The following is my solution:

HtmlString Markup(Func<dynamic, HelperResult> markupExpr)
{
return new HtmlString(markupExpr(null).ToHtmlString());
}

and you can call it as such:

@{
var markup = Markup(@<span>...</span>);
}

(at this point you can put it in a list etc).

and then you can call it:

@markup

Nice and useful info. Thanks

beatrice

I recommend you to have a look here if you are bored. It will help you to make homework fun.

I am very happy after reading this fantastic Article, I appereciate your work.

norton.com/setup | www.norton.com/setup

Microsoft Excel is a spreadsheet developed by Microsoft for Windows, macOS, Android and iOS.
If your Microsoft Excel 2010 Crashes so, here are some easy steps to recover your MS Excel. Click on the link "How to Fix Microsoft Excel 2010 Crashes?".

How to Download and Install Microsoft Office 2019 Products Requested from TechSoup, We will help you to deploy the office setup successfully on your device. 1. Sign in to Microsoft Account 2. Enter Product Key 3. Setup Office
office.com/setup


Webroot SecureAnywhere Antivirus scans your system quickly and protects you from viruses, rootkits, keyloggers and other harmful programs.
www.webroot.com/secure | webroot.com/secure | Install Webroot With Key Code

AVG Secure is designed to keep your digital info safe and secure. Learn about its pricing, security features, and more in this review.

www.avg.com/retail |www.avg.com/activate | AVG Download | avg.com/retail

I read your article it is very interesting and every concept is very clear, thank you so much for sharing.
office.com/setup

I did not know the entire benefits of Garmin Nuvi Update. But since I have read this blog on map update, I have installed all available updates for my Garmin device. I must say that this piece of blog has helped me improve navigation experience. I am not suggesting all my friends to read this blog and get Garmin Map Update with this team. For detailed information. Our Garmin GPS professionals will provide instant help.

Studying non-stop for 8-9 hours can drain you out mentally and physically. Take timely breaks to break the monotony. Take 10 minutes after studying for an hour and refresh yourself. It will help you focus and stay energetic to learn better.

Always practice these tips to overcome your fears and perform much better in your exams. You can also check
paper writing help

Great! This has been an incredibly wonderful post. Thank you for providing this info. Check out the way to fix Error Code 0xc00000e9 in Windows 10. Lean how you can fix it at your own or feel free to call our experts on our toll-free numbers or visit our website to know more!

Amazon.com/mytv is provide you unlimited new movies and new latest tv serial.in my blog i will provide you step by step process how to use Amazon.com/mytv, Amazon codeus, Amazon.com/code and Amazon.com/redeem

voucher.The MyTV Code is a free application that can be downloaded for free and will let you watch TV on your PC. It's not a TV provider app; it works with any computer that can view web pages.

After using the Amazon Promo code you can Enjoy latest Movies and your Favorite TV shows. Amazon Promo code Provide you Different types Facilities. you can Download you Favorite movie and TV Serial.
Amazon.com/mytv|
Amazon.com/code |
Amazon.com/redeem|

Amazon gift card provides you different types amazon/redeem vouchers. After purchasing you can add these gift card in you Amazon account and can check in you “Amazon pay balance” section. if you have sufficient balance then you can do purchasing.www.Amazon.com/mytv | www.Amazon.com/code | www.Amazon.com/redeem | amazon..com/code

Get started enjoying Prime Videos on a big screen, follow the steps to get Amazon Prime on My TV, and start watching popular shows with your loved ones and friends.
www.Amazon.com/mytv | www.Amazon.com/code

I went through your blog, the concepts are very much clear and the information you have shared in your posts is worth appreciable. Keep sharing more.

office.com/setup

Acadecraft offers substantial copyediting services to global business leaders. So, to fine-tune the textual content of professional documents, Acadecraft is always ready. Here, we deliver copy editing solutions in multiple languages spoken worldwide. Hence, to make the documents readable version, connect with the leading copyediting solutions company. Also, take the level of the professional manuscript to the next level.
assessment development solutions
K-12 service provider

Kids R Kids Learning Academy proprietor, Malak Agha, was a darling kindergarten and 1st grade educator in Texas when she started looking for a superior method for offsetting her work with family. Opening Kids R Kids in West Allen, Texas, very nearly quite a while back was only the arrangement she really wanted.

Montessori in Allen tx


Malak's three youngsters, presently 5, 8, and 11 years of age, come to Kids R Kids every day. She gives WatchMeGrow Streaming Video Services to the families in her middle so they can have the very extravagance that she does: better balance between serious and fun activities.
"Educating was so satisfying, however I was passing up those minutes with my own kids," Malak says of her past profession. Like all guardians, that apprehension about passing up exceptional minutes is something Malak knows well.

Daycare in Allen tx

She imparts this story to families that come to her middle. While building our middle, the Kids R Kids corporate office suggested they offer WatchMeGrow.
Whenever forthcoming guardians call her middle, Malak says web based video administration is among the main three elements she brings up. It's a main event. For these guardians, the biometric (finger impression filter) section framework, glass inside walls in study halls and WatchMeGrow web based video from anyplace are the elements that make families pay heed and enlist their youngsters.

Presently, as she plans to open her second Kids R Kids area in Frisco, Texas, she is considerably more persuaded that giving an approach to guardians to associate with their youngsters while they are in her consideration makes her business effective.

https://heritagemontessoriacademy.com/

Thanks for sharing beautiful content. I got information from your blog.keep sharing.Thank you quite much for discussing this type of helpful informative article. Will certainly stored and reevaluate your Website.
divorcio de mutuo acuerdo fredericksburg virginia

Your blogs are really good and informative. Whenever forthcoming guardians call her middle, Malak says web based video administration is among the main three elements she brings up. It's a main event. For these guardians, the biometric Bankruptcy lawyer fairfax va. It is very great and useful to all. Keep sharing more useful blogs.

This comment has been removed by the author.

Nice blog
Enhance your professional image with our top-notch CV & Resume Editing Services Ireland. Our expert editors will refine your resume, ensuring it showcases your skills and experience effectively. Trust us to make your CV stand out from the competition.

This comment has been removed by the author.

Using a safe and affordable drug to treat erectile dysfunction is essential for many men. Kamagra Oral Jelly Tablets are a common and effective way to help overcome impotence.

Good site for legal services, a valid content in this blogAbogado Conducción Imprudente Botetourt VA

Your blogs are really good and interesting. It is very great and informative. I got a lots of useful information in your blogs. In ASPX pages, one can simply put the beginning and end of a lambda expression in expression blocks, then put markup in the middle abogados de accidentes. Keeps sharing more useful information in your blogs.

Post a Comment