Click here to Skip to main content
15,885,985 members

Dominic Burford - Professional Profile



Summary

Follow on Twitter LinkedIn      Blog RSS
6,554
Author
2,053
Authority
9,852
Debator
8
Editor
100
Enquirer
212
Organiser
2,954
Participant
I am a professional software engineer and technical architect with over twenty years commercial development experience with a strong focus on the design and development of web and mobile applications.

I have experience of architecting scalable, distributed, high volume web applications that are accessible from multiple devices due to their responsive web design, including architecting enterprise service-oriented solutions. I have also developed enterprise mobile applications using Xamarin and Telerik Platform.

I have extensive experience using .NET, ASP.NET, Windows and Web Services, WCF, SQL Server, LINQ and other Microsoft technologies. I am also familiar with HTML, Bootstrap, Javascript (inc. JQuery and Node.js), CSS, XML, JSON, Apache Cordova, KendoUI and many other web and mobile related technologies.

I am enthusiastic about Continuous Integration, Continuous Delivery and Application Life-cycle Management having configured such environments using CruiseControl.NET, TeamCity and Team Foundation Services. I enjoy working in Agile and Test Driven Development (TDD) environments.

Outside of work I have two beautiful daughters. I am also an avid cyclist who enjoys reading, listening to music and travelling.

 

Reputation

Weekly Data. Recent events may not appear immediately. For information on Reputation please see the FAQ.

Privileges

Members need to achieve at least one of the given member levels in the given reputation categories in order to perform a given action. For example, to store personal files in your account area you will need to achieve Platinum level in either the Author or Authority category. The "If Owner" column means that owners of an item automatically have the privilege. The member types column lists member types who gain the privilege regardless of their reputation level.

ActionAuthorAuthorityDebatorEditorEnquirerOrganiserParticipantIf OwnerMember Types
Have no restrictions on voting frequencysilversilversilversilver
Bypass spam checks when posting contentsilversilversilversilversilversilvergoldSubEditor, Mentor, Protector, Editor
Store personal files in your account areaplatinumplatinumSubEditor, Editor
Have live hyperlinks in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Have the ability to include a biography in your profilebronzebronzebronzebronzebronzebronzesilverSubEditor, Protector, Editor
Edit a Question in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Edit an Answer in Q&AsilversilversilversilverYesSubEditor, Protector, Editor
Delete a Question in Q&AYesSubEditor, Protector, Editor
Delete an Answer in Q&AYesSubEditor, Protector, Editor
Report an ArticlesilversilversilversilverSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending ArticlegoldgoldgoldgoldSubEditor, Mentor, Protector, Editor
Edit other members' articlesSubEditor, Protector, Editor
Create an article without requiring moderationplatinumSubEditor, Mentor, Protector, Editor
Approve/Disapprove a pending QuestionProtector
Approve/Disapprove a pending AnswerProtector
Report a forum messagesilversilverbronzeProtector, Editor
Approve/Disapprove a pending Forum MessageProtector
Have the ability to send direct emails to members in the forumsProtector
Create a new tagsilversilversilversilver
Modify a tagsilversilversilversilver

Actions with a green tick can be performed by this member.


 
GeneralImproving Your SQL Stored Procedures Pin
Dominic Burford2-May-19 5:47
professionalDominic Burford2-May-19 5:47 
GeneralPassing a list of items to a SQL stored procedure Pin
Dominic Burford27-Mar-19 0:55
professionalDominic Burford27-Mar-19 0:55 
GeneralSoftware development is like plumbing Pin
Dominic Burford8-Mar-19 5:12
professionalDominic Burford8-Mar-19 5:12 
GeneralVersioning a .NET Core 2.2 application Pin
Dominic Burford7-Mar-19 5:04
professionalDominic Burford7-Mar-19 5:04 
GeneralUsing tags with push notifications from Azure Notification Hub Pin
Dominic Burford17-Feb-19 23:21
professionalDominic Burford17-Feb-19 23:21 
GeneralSending Push Notifications with Azure Notification Hub Pin
Dominic Burford25-Jan-19 4:34
professionalDominic Burford25-Jan-19 4:34 
GeneralUnit testing a Xamarin Forms mobile app Pin
Dominic Burford13-Jan-19 21:59
professionalDominic Burford13-Jan-19 21:59 
GeneralApple development sucks Pin
Dominic Burford8-Jan-19 1:09
professionalDominic Burford8-Jan-19 1:09 
GeneralBut the tech giants are private companies Pin
Dominic Burford19-Dec-18 5:31
professionalDominic Burford19-Dec-18 5:31 
GeneralThe latest version of our app nears completion Pin
Dominic Burford7-Dec-18 2:21
professionalDominic Burford7-Dec-18 2:21 
GeneralIs Silicon Valley a force for good? Pin
Dominic Burford27-Nov-18 21:57
professionalDominic Burford27-Nov-18 21:57 
GeneralUsing Javascript to retrieve values from a Xamarin Forms WebView Pin
Dominic Burford27-Nov-18 5:01
professionalDominic Burford27-Nov-18 5:01 
GeneralUsing the MVVM pattern with a Xamarin Forms mobile app Pin
Dominic Burford21-Nov-18 1:13
professionalDominic Burford21-Nov-18 1:13 
GeneralConsuming a private nuget feed in an Azure DevOps build pipeline Pin
Dominic Burford2-Nov-18 6:55
professionalDominic Burford2-Nov-18 6:55 
GeneralBuild a Xamarin.Forms iOS mobile app using Azure DevOps Pin
Dominic Burford8-Oct-18 23:38
professionalDominic Burford8-Oct-18 23:38 
GeneralDeploy a Mobile app to Azure using Azure DevOps Pin
Dominic Burford21-Sep-18 5:30
professionalDominic Burford21-Sep-18 5:30 
GeneralSetting up my first build pipeline with Azure DevOps Pin
Dominic Burford19-Sep-18 4:06
professionalDominic Burford19-Sep-18 4:06 
GeneralChoosing a mobile application development platform Pin
Dominic Burford4-Sep-18 1:36
professionalDominic Burford4-Sep-18 1:36 
GeneralExecuting an AJAX request from an ASP.NET Core querystring parameter Pin
Dominic Burford20-Aug-18 5:05
professionalDominic Burford20-Aug-18 5:05 
I recently had to figure out how to execute an AJAX request upon loading an ASP.NET Core Razor page which contained a querystring parameter. On one of our Razor pages, we have a Kendo UI Treeview. Clicking on this treeview populates the page with data for the selected item. The click event on the treeview executes a Javascript event, which in turn makes an AJAX request to a service to fetch the data for the selected item. This Javascript event then populates the Razor page with the returned data.

When launching the Razor page interactively from the menu the URL looks like this.

https://localhost/DocumentManager/DocumentManager

When launching the Razor page for a specific item programmatically the URL looks like this.

https://localhost/DocumentManager/DocumentManager?documentid=1234

So basically, the page is populated with data from an AJAX request which is fired from a Javascript event. The problem I had was that we needed to open this page and load up the data for a specific item. Whereas currently the item is selected by the user interactively clicking on an item from the Kendo UI Treeview, I now had to figure out how to load the page data for an item progrmmatically.

So here's how I did it.

I firstly needed to figure out if the Razor page was being launched interactively (with no querystring parameters) or programmatically (with querystring parameters). I did this using URLSearchParams URLSearchParams - Web APIs | MDN[^]. This is an interface that allows a Javascript client to manipulate and work with querystring parameters. This offers a far simpler and elegant mechanism for working with querystring parameters than horrible string manipulation and / or regex queries.

I was passing a document ID to the Razor page in the form of:

https://localhost/DocumentManager/DocumentManager?documentid=1234
<div>
  rest of the Razor page goes here
</div>
<script>
    $(document).ready(function () {
        var queryparams = window.location.search;
        //using URLSearchParams to extract the querystring parameter
        if (queryparams && typeof (queryparams) === "string" && queryparams.length > 0) {
            var urlParams = new URLSearchParams(window.location.search);
            var documentid = urlParams.get('documentid');
            //call the JS function that will make the AJAX request and fetch the data
            loadDocumentManagerForDocument(documentid ); //see below for definition!
        }
    });
</script>
In our JS file site.js the function that makes the AJAX request is defined as follows.
function loadDocumentManagerForDocument(documentid) {
    if (documentid) {

        //AJAX call to Razor page handler to fetch the document details

        $.ajax({
            type: "GET",
            url: `/DocumentManager/DocumentManager?handler=document&documentid=${documentid}`,
            contentType: "application/json",
            dataType: "json",
            success: function (response) {
                //populate the form elements with the returned data
            },
            failure: function (response) {
                //handle the error
            }
        });
    }
}
Finally, here is the Razor page handler that fetches the data. Remember, this is the same Razor page handler that is used for both loading the data interactively (as the user clicks items from the Kendo UI Treeview) and programmatically.
public async Task<JsonResult> OnGetDocument(int documentid)
{
    JsonResult result = null;
    var response = await new DocumentManagerPageModelService().GetDocumentById(documentid);
    result = new JsonResult(document);
    return result;
}
Here is yet another example demonstrating the incredible flexibility and power of ASP.NET Core. This solved what I was thinking may be a really tough problem, but in the end it wasn't really that difficult. With a bit of thinking the problem through, the solution is quite straight forward. I hope this solution helps someone else.
"There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult." - C.A.R. Hoare

Home | LinkedIn | Google+ | Twitter


modified 20-Aug-18 11:11am.

GeneralBuilding a Document Manager with ASP.NET Core 2.1 Pin
Dominic Burford19-Aug-18 22:38
professionalDominic Burford19-Aug-18 22:38 
GeneralReducing the surface area of the client Pin
Dominic Burford26-Jul-18 21:32
professionalDominic Burford26-Jul-18 21:32 
GeneralUnderstanding what you're doing Pin
Dominic Burford26-Jul-18 3:24
professionalDominic Burford26-Jul-18 3:24 
GeneralSetting environments in ASP.NET Core Pin
Dominic Burford16-Jul-18 21:29
professionalDominic Burford16-Jul-18 21:29 
GeneralCreating a zipped deployment for an ASP.NET Core web application Pin
Dominic Burford28-Jun-18 23:59
professionalDominic Burford28-Jun-18 23:59 
GeneralI’m turning into a Microsoft fanboy Pin
Dominic Burford8-Jun-18 5:45
professionalDominic Burford8-Jun-18 5:45 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.