Latest Entries

Implementing a Custom TypeConverter In Razor Pages

calendar_today 24 November 2020 18:34

ASP.NET Core Razor Pages

In my most recent article, I showed how to create a custom model binder to bind an ISO 8601 string representation of a week of the year to a DateTime type in a Razor Pages application. The custom model binder leant heavily on the existing infrastructure that binds strings to simple types. Custom model binders are the correct solution if you want to bind to simple types, but if you want to bind to a complex type, the recommendation is to implement a TypeConverter according to the offical docs. But the docs don't provide an example that shows how to do that in the context of model binding. So here's one.

Implementing a Custom Model Binder In Razor Pages

calendar_today 10 November 2020 15:28

ASP.NET Core Razor Pages

In Razor Pages, model binding is the process that maps data from an HTTP request to simple PageModel properties or handler parameters. Incoming data can be included in a request as posted form values, query string values or route data. The default collection of model binders cover every simple .NET data type.. But sometimes they are not enough, and you need to add your own implementation.

Working with Dates And Times in Razor Pages Forms

calendar_today 02 November 2020 17:17

ASP.NET Core Razor Pages

When working with dates and times in a Razor Pages form, you need to render a suitable control based in the task requirement. Prior to HTML5, developers largely depended on third party date picker libraries. Now, a variety of native browser options exist, although they enjoy varied support across modern browsers. These include options for managing the date and time, just the date or time, and for working with the month or week of the year.

Display Images in Bootstrap Carousel using Razor Pages and Entity Framework

calendar_today 19 June 2020 15:37

ASP.NET Core Razor Pages Bootstrap

This short article shows how to display images stored in a database in a Razor Pages application using the Bootstrap Carousel and Entity Framework Core.

Razor Pages And Bootstrap - Lazy Loading Tabs

calendar_today 10 June 2020 12:34

ASP.NET Core Razor Pages Bootstrap

Tabbed interfaces are a great way for managing the presentation of large amounts of information into separate panels, where each panel's data makes sense on its own, and only one panel is viewable at a time. The tabs in a browser are a great example of this. From a Razor Pages developer's point of view, tabs are particularly useful for controlling the display of complex data in Line Of Business applications.

Razor Pages And Bootstrap - Modal Master Details

calendar_today 28 May 2020 16:09

ASP.NET Core Razor Pages Bootstrap

This is the first in a series of posts exploring how to use some of the components provided by Bootstrap within a database-driven Razor Pages web application. In this article, I look at using the Bootstrap Modal in a Master/Details scenario, to display the details of the selected record in a master list.

Razor Pages Localisation - SEO-friendly URLs

calendar_today 07 January 2020 07:37

ASP.NET Core Razor Pages Localization

This is the fourth article in a series that explores various aspects of localisation in ASP.NET Core Razor Pages applications. This article concentrates on the SEO aspects of localisation as they pertain to URL management, and how to utilise the RouteDataRequestCultureProvider to help you manage that.

Localising Data Annotation Attributes in Razor Pages

calendar_today 17 December 2019 07:33

ASP.NET Core Razor Pages Localization

This is the third article in a series that explores various aspects of localisation in ASP.NET Core Razor Pages applications. The first article looked at how to work with cultures, and the second covered the basics of using resource files for static content translations. In this article, I explain how to provide localised resources for form labels and validation error messages for PageModel properties that have Data Annotation attributes applied to them.

Using Resource Files In Razor Pages Localisation

calendar_today 10 December 2019 07:50

ASP.NET Core Razor Pages Localization

This is the second in a series of articles that cover localisation in ASP.NET Core Razor Pages applications. In the previous article, I looked at the basic configuration required to work with cultures which are the basic building block of localisation. I showed how to specify the cultures that the application supports, how to set the culture for the current request, and how some items, such as calendars are translated depending on the current culture. This article builds on the application which was introduced in the the last article and explores how to configure and use resources to store translated versions of static content.

Localisation in ASP.NET Core Razor Pages - Cultures

calendar_today 03 December 2019 07:50

ASP.NET Core Razor Pages Localization

This is the first in a series of articles that explores localisation in ASP.NET Core Razor Pages applications. This article will look at the configuration required to prepare a site for content localisation, in other words, to globalise the site. Future articles will cover the creation of localised content and how to present it.

What Happened To @Helpers In ASP.NET Core?

calendar_today 21 November 2019 13:11

ASP.NET Web Pages Razor ASP.NET Core Razor Pages

When you port your Razor-based application to ASP.NET Core, whether its an MVC application or a Web Pages application, you might notice that adding a @functions block to your .cshtml file works as expected, but any attempt to add a @helpers block doesn't work at all.

Improved Remote Validation in Razor Pages

calendar_today 13 November 2019 07:51

ASP.NET Core Razor Pages

Remote Validation is a technique that uses client side script to validate user input on the server without posting the entire form. Remote validation has always been possible in Razor Pages using either the RemoteAttribute, which requires an MVC controller to work, or by writing custom client-side script. One almost completely overlooked feature that was included in ASP.NET Core 3.0 was the introduction of a Razor Pages-specific validation attribute that removes this reliance on MVC controllers or custom code for remote validation.

Managing Authentication Token Expiry In WebAssembly-based Blazor

calendar_today 05 November 2019 13:50

ASP.NET Core Blazor

The Blazor WebAssembly project template doesn't feature an option to include authentication. If you want to add authentication to a WebAssembly-based Blazor application, you need to do it yourself. This article shows how to add application-wide authentication management and then to use built-in Razor components to protect the FetchData page in the standard template from unauthorised users.

Uploading Files In Blazor

calendar_today 17 October 2019 07:47

ASP.NET Core Blazor

A few weeks ago, Steve Sanderson blogged about publishing a package for a prototype Blazor file input component, designed to make working with user-supplied files in Blazor applications a lot easier. Steve has provided some very clear examples demonstrating how to use the component in a number of scenarios. Missing, though, is an example showing how to make an HTTP request to upload a file to some back-end server from a Blazor WebAssembly application.

Working With Query Strings In Blazor

calendar_today 11 October 2019 12:44

ASP.NET Core Blazor

When passing data in a URL within a Blazor application, most of the time you will define route templates that incorporate parameter placeholders, passing values as URL segments. You might also find that you need to be able to work with query string values, so how do you do that in a Blazor application?

Optional Parameters in Razor Pages Routing

calendar_today 21 August 2019 20:11

ASP.NET Core Razor Pages

Razor Pages routing is based on attribute routing and is very powerful. Parameters provide a way of passing arbitrary data to a page via the URL. Optional parameters allow URLs to matched to routes even if no parameter value is passed. Things can get a bit complicated if you want to permit multiple optional parameters.

Using Razor Components In A Razor Page

calendar_today 05 August 2019 12:40

ASP.NET Core Razor Pages Blazor

In my last article, I looked at some of the new things that ASP.NET Core 3.0 will introduce to Razor Pages developers. One of the features that I touched on was Razor Components. In this article, I take a more detailed look at what they are and how they can be used.

What's New In .NET Core 3.0 For Razor Pages

calendar_today 24 July 2019 19:44

ASP.NET Core Razor Pages Blazor

Later this year, .NET Core 3.0 will be released. The main features include WPF and Windows Forms support (albeit only on the Windows operating system) and server-side Blazor. Razor Pages applications will also see some changes. I cover some of these as part of a guide to upgrading an application from 2.2 to 3.0. Then I have a quick look at some of the other new features. Note that the information in this article is based on Preview 6, and is subject to change.

AJAX Posts In Razor Pages And HTTP 400 Errors

calendar_today 15 July 2019 12:41

ASP.NET Core Razor Pages

Every other day or so it seems, a new question is posted to one of the community forums that cover ASP.NET Core Razor Pages asking why an AJAX post doesn't appear to work, or results in an HTTP 400 error. This article explains the most common cause, and offers guidance on how to solve it.

Simple Authentication In Razor Pages Without A Database

calendar_today 08 May 2019 07:26

ASP.NET Core Razor Pages ASP.NET Identity

Sometimes, using the full ASP.NET Core Identity framework is overkill for small, one-user applications that require some form of authentication. I'm thinking about blog applications, or web-based utilities that have admin areas that only you should be allowed to reach. All you really want to do is authenticate against a user name and password stored in a config file or similar. You really don't need the ceremony of a database, EF Core, ApplicationDbContexts, SignInManagers, UserManagers etc. This article provides a step-by-step guide to implementing simple authentication using just cookies, while storing credentials securely without a database.