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.

38 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.

Thank you for sharing excellent information. Your website is so cool. I am impressed by the details that you have on this website.
office.com/setup
office/setup
Norton.com/setup

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

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

Sign in to enter office setup product key. Know how to benefit, download, install, set in movement, uninstall and reinstall MS office setup.
office.com/setup
http://officecom-officeoffice.com/
call us at +1-888-421-9666[tool free]

We are available 24/7 to help you out the complete procedure of download and install of office.com/setup. And also Check out here complete steps for mcafee.com/activate for downloading, installing, uninstalling, and activating, and also get antivirus help for norton.com/setup. For norton activation, get the 25 characters alphanumeric product key from Norton offers hordes of reliable antivirus programs

We are providing online assistance to the customers for norton antivirus. If you want support from the expert's so, you can click on the following link and our expert's give you the best solution to your problem.
Office.com/setup
www.norton.com/setup
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

Trend micro protects your multiple online works such as visiting sites, online data transfer online shopping, online banking, uploading data and files online, social media, and many others. www.trendmicro.com/bestbuypc |Trend Micro Geek Squad | www.trendmicro/bestbuypc

AVG AntiVirus provides a very interesting capability which allows administrators to remotely install and configure the software from a single location.
www.avg.com/retail |
avg.com/retail |
www.avg.com/activation |
install avg with license number |
avg download


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

Medical research paper writing services seekers have been on the rise lately since most learners need Medical Assignment Writing Services, medicine essay writing help and nursing essay writing services.

Amazing and Interesting things to read and learn. Its amazing to find something interesting and cool stuff. Enjoy shayari and motivation shayari and share them.

Very Good Blog . The way of presenting is superb. In new startups business facing lots of problem weather the business is a small shop or a big MNC's Company & Nowadays one of biggest problems is to purchasing IT products that's take lots of money. We Provide IT Products on Rent. We are experts in our Field. Laptop on Rent

My travel life has been easier with Garmin Express. Plus I can get all the latest update through their blogs. I use the Garmin app and is totally upto the mark. I recommend everyone to use Garmin Gps Update and get Garmin life time map update and make your life easier with Garmin Map Update for instant help from Garmin GPS experts.

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

ij.start.canon and find out the best way to download Canon printer drivers.

canon.com/ijsetup | Ij.start canon | ij.start.canon | canon.com/ijsetup/mg2522


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

Incredible post I should state and much obliged for the data. Instruction is unquestionably a sticky subject. Be that as it may, is still among the main themes of our opportunity. I value your post and anticipate more. 메이저저사이트

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.

Post a Comment