Blog: Posts from June, 2013

AJAX(112) App Studio(7) Apple(1) Application Builder(245) Application Factory(207) ASP.NET(95) ASP.NET 3.5(45) ASP.NET Code Generator(72) ASP.NET Membership(28) Azure(18) Barcode(2) Barcodes(3) BLOB(18) Business Rules(1) Business Rules/Logic(140) BYOD(13) Caching(2) Calendar(5) Charts(29) Cloud(14) Cloud On Time(2) Cloud On Time for Windows 7(2) Code Generator(54) Collaboration(11) command line(1) Conflict Detection(1) Content Management System(12) COT Tools for Excel(26) CRUD(1) Custom Actions(1) Data Aquarium Framework(122) Data Sheet(9) Data Sources(22) Database Lookups(50) Deployment(22) Designer(177) Device(1) DotNetNuke(12) EASE(20) Email(6) Features(101) Firebird(1) Form Builder(14) Globalization and Localization(6) How To(1) Hypermedia(2) Inline Editing(1) Installation(5) JavaScript(20) Kiosk(1) Low Code(3) Mac(1) Many-To-Many(4) Maps(6) Master/Detail(36) Microservices(4) Mobile(63) Mode Builder(3) Model Builder(3) MySQL(10) Native Apps(5) News(18) OAuth(9) OAuth Scopes(1) OAuth2(13) Offline(20) Offline Apps(4) Offline Sync(5) Oracle(11) PKCE(2) Postgre SQL(1) PostgreSQL(2) PWA(2) QR codes(2) Rapid Application Development(5) Reading Pane(2) Release Notes(183) Reports(48) REST(29) RESTful(29) RESTful Workshop(15) RFID tags(1) SaaS(7) Security(81) SharePoint(12) SPA(6) SQL Anywhere(3) SQL Server(26) SSO(1) Stored Procedure(4) Teamwork(15) Tips and Tricks(87) Tools for Excel(2) Touch UI(93) Transactions(5) Tutorials(183) Universal Windows Platform(3) User Interface(338) Video Tutorial(37) Web 2.0(100) Web App Generator(101) Web Application Generator(607) Web Form Builder(40) Web.Config(9) Workflow(28)
Posts from June, 2013
Sunday, June 30, 2013PrintSubscribe
How to Configure DotNetNuke Factory Project with DNN7

You can integrate line-of-business web applications with the popular web content management system DotNetNuke, the leading web content system for ASP.NET by using Code On Time’s DotNetNuke Factory.

Why DotNetNuke?

If you have experience with creating database web applications, then you’ve probably considered using a dynamic portal to increase the flexibility of your web application.

One can easily picture a whole world built around a few business data enabled pages. Users register using a portal,  with the latest release notes and instructions posted for their convenience. Add a quick online survey and a few blog posts to your web application, without a fuss.

If you try building such a portal on your own, you will soon find that the task is not that simple.  While you may be the leading expert in web application design with a database to prove it, web content delivery is another topic altogether.

Content management systems such as DotNetNuke and Microsoft SharePoint are widely adopted by organizations and businesses of all sizes as repositories of knowledge and web assets.

DotNetNuke is a proven portal software built with ASP.NET, boasting countless installations and a large dedicated user base. The easily available Community Edition of this product makes it especially attractive for developers who need portal-style functionality in their application at a low cost.

Integrating DotNetNuke With Your Line-of-Business Application

DotNetNuke is exceptionally easy to install and maintain – done entirely in a web browser.

DotNetNuke has impressive extensibility. One popular method of extending DotNetNuke is module development. A “module” represents an area on a portal page that is rendered by a custom application. For example, a calendar of events or a survey can be implemented as a module and placed on any portal page.j

You can also create a database application with complex data management  features and have it incorporated in a DotNetNuke module.

The development process is somewhat complicated. Here is where Code On Time’s DotNetNuke Factory comes to the rescue. DotNetNuke Factory will aid you in building a dedicated application packaged as a DotNetNuke module. This module can be deployed to the portal in seconds.

WebMatrix and DotNetNuke

Many popular software titles, including DotNetNuke, were developed for Microsoft ASP.NET Web Platform. Microsoft has created WebMatrix, a vehicle to allow simple download and installation of many popular open source web applications. WebMatrix includes a lightweight version of Microsoft Internet Information Services called IIS Express. This web server makes it possible to run web applications on virtually any type of operating system from Microsoft.

You will have to download WebMatrix at to proceed with this tutorial.

Configuring Database

Start SQL Server Management Studio. In the Solution Explorer, right-click on Databases node and press New Database.

Creating a new database.

Assign a name and press OK to save the database.

Configuring DotNetNuke Web Site

Start Microsoft WebMatrix. Select New | App Gallery.

Creating a new app from the App Gallery.

Select .DotNetNuke Community Edition, assign a name, and press Next.

Creating a new DotNetNuke web app.

Accept the EULA, and wait for the download to finish.

Installing DotNetNuke Community Edition.

Press OK, and the web site install wizard will launch in the default browser.

Assign a password to the host account. Under Database Information, select Custom. Enter the connection string properties for the previously created database. Make sure to specify an Object Qualifier of “DNN_”.

Specifying database information for the DotNetNuke instance.

When database installation is complete, press Visit Website to see the result in action.

Creating a DotNetNuke Factory Project

Start the web app generator, and click Create new web application. Select DotNetNuke Factory.

Creating a new DotNetNuke Factory project.

Enter a name for the project, select your preferred language, and press Create.

Specifying a name and language for the new web app.

On the next page, specify the path to the DotNetNuke installation folder, and press Next.

Specifying the DotNetNuke location.

Click on the “” button next to Connection String field. In the Sample Tables dropdown, select “Northwind” and press Install.

Installing Northwind sample database in the DotNetNuke database.

When complete, click OK. Press Next until you reach the Reporting page. Enable reporting by activating the checkbox.

Enabling reports in the web app.

Hold down Shift key, and press Next to skip to the Summary page. Press Generate, and wait for the web app to open in the test site.

Installing the Module in DNN7

Switch back to the app generator. Click on the project name, and press Publish. The generator will automatically copy files into the DNN instance specified when the project was created.

Switch back to the running DNN site. Mouse over the Host tab at the top of the page and click on Extensions.

Accessing Extensions page for DotNetNuke 7.

On the Extensions page, switch to Available Extensions tab. Scroll down to Modules section, and press Install next to the DotNetNuke Factory application module.

Installing the new DNN Factory module.

Press Next twice, accept the license, and press Next again to install the module.

Accepting the license for the module.

When installation is complete, press Return to reload the web app.

The module has been installed successfully.

Creating a Page and Adding the Module

At the top of the page, mouse over Pages and press Add New Page.

Adding a new page in DNN7.

Assign the following values:

Property Value
Page Name Customers
Page Title Customers
Insert Page After: Home

Switch to the Permissions tab, and check the box under View Page next to All Users. Press Add Page.

Allowing all users viewing rights to the page.

The browser will navigate to the new page. Mouse over Edit Page, and press Edit this Page.

Entering Edit Mode for the page.

Mouse over Modules, and press Add New Module. Drop the module named after your namespace into the contentPane area.

Dropping the module into the contentPane.

The module will be instantiated. Next, the logical application page must be selected. Mouse over the gear icon in the top right corner of the module and press Settings.

Accessing settings for the module.

Select Customers, and press Update.

Specifying a logical application page for the module.

Customers will now be displayed in the module on the page.

Northwind module is successfully displayed in DNN7.

Friday, June 28, 2013PrintSubscribe
“Data-” Attributes, Chart, and Import Processor Enhancements

Code On Time release includes the following features and enhancements:

  • Legacy attributes with the namespace "factory:*" previously used in the page markup were replaced with "data-" attributes to ensure compatibility with the upcoming Mobile Client Library, Cloud On Time, and SaaS Integration feature in Unlimited edition.
  • Chart views will retain the height after the first rendering.
  • Chart views will render with the correct width and height in FireFox.
  • Import processor allows overriding error reporting and handling.
  • Fixed the issue with the Login page title not being assigned correctly.
  • Fixed closed "placeholder" spans in Main.master.
  • Fixed the bug in lookups with the style “Auto Complete” that was freezing actions in data views.

Mobile Client Library and 2nd Generation Datasheet View are planned for the next release.

Mobile feature will be based on the latest jQuery Mobile 1.3.

Next release is also expected to include SaaS Integration  feature to enable integration of Web Site Factory, Web App Factory, and Azure Factory apps with any hosting platforms without the need to create native apps. This will dramatically increase ability to create a “cloud” solution from any existing web app created with Code On Time.

Thursday, June 27, 2013PrintSubscribe
Import Processor Error Handling

Code On Time web apps come with a native CSV Import processor that will parse comma separated files and create new records. However, this native processor does not display any errors that may have occurred due to malformed CSV. Let’s override methods in the processor in order to handle and report these errors.

Start the app generator. Click on the project name, and press Develop to open the project in Visual Studio. In the Solution Explorer, right-click on ~/App_Code folder and press Add | Class.

Adding a class to App_Code folder.

Assign a name to the item and press OK to save. Replace the code base with the following:


using System;
using System.Collections.Generic;
using System.IO;
using MyCompany.Data;
using System.Net.Mail;

namespace MyCompany.Data
    public partial class CsvImportProcessor
        protected override bool HandleError(ActionResult r, ActionArgs args)

            string dir = AppDomain.CurrentDomain.BaseDirectory;
            using (StreamWriter file = new StreamWriter(dir + "\\ImportErrorLog.txt", true))
                foreach (string s in r.Errors)
                    file.WriteLine(String.Format("{0:s}: {1}",DateTime.Now, s));
            return true;

        protected override void ReportErrors(string controller, string recipients, string logFileName)
            string[] recipientsList = recipients.Split(',');
            SmtpClient client = new SmtpClient();
            foreach (string s in recipientsList)
                string address = s.Trim();
                if (!(String.IsNullOrEmpty(address)))
                    MailMessage message = new MailMessage();
                        message.To.Add(new MailAddress(address));
                        message.Subject = String.Format("Import of {0} has been completed", controller);
                        message.Body = File.ReadAllText(logFileName);
                    catch (Exception)

Visual Basic:

Imports Microsoft.VisualBasic
Imports System.IO
Imports MyCompany.Data
Imports System.Net.Mail

Namespace MyCompany.Data
    Partial Public Class CsvImportProcessor
        Protected Overrides Function HandleError(r As ActionResult, args As ActionArgs) As Boolean
            Dim dir As String = AppDomain.CurrentDomain.BaseDirectory
            Using file As StreamWriter = New StreamWriter(dir + "\\ImportErrorLog.txt", True)
                For Each s As String In r.Errors
                    file.WriteLine(String.Format("{0:s}: {1}", DateTime.Now, s))
                Return True
            End Using
        End Function

        Protected Overrides Sub ReportErrors(controller As String, recipients As String, logFileName As String)
            Dim recipientsList() As String = recipients.Split(Global.Microsoft.VisualBasic.ChrW(44))
            Dim client As SmtpClient = New SmtpClient()
            For Each s As String In recipientsList
                Dim address As String = s.Trim()
                If Not (String.IsNullOrEmpty(address)) Then
                    Dim message As MailMessage = New MailMessage()
                        message.To.Add(New MailAddress(address))
                        message.Subject = String.Format("Import of {0} has been completed", controller)
                        message.Body = File.ReadAllText(logFileName)
                    Catch __exception As Exception
                    End Try
                End If
        End Sub
    End Class
End Namespace

The first method above will create a file “ImportErrorLog.txt” in the application folder and write every error that occurred. It returns true in order to cancel the default handling. The second method overrides the default error reporting and sends an email to the specified recipient. This requires web app SMTP configuration. If a malformed CSV file was imported, the ImportErrorLog.txt file will look like the picture below.

Log text file logging all errors when importing.