ASP.NET Webpages with MaterializeCSS – Array and Cards

ASP.NET Webpage Array Example with MaterializeCSS and C#

The simplest way to create web applications targetting .NET is not Webforms nor ASP.NET Core MVC.

It's actually ASP.NET webpages,sometimes called Razor.

With this we are able to use Razor syntax and develope applications as easily as you can with languages like PHP.
Yet we have the full power of .NET powering applications meaning that we can use features like LINQ and ADO.NET and the rich System.Collections framework among others.

In this example we will see how easy it is. We are going to see how to populate a ListView/GridView with items from an array. We basically have a two-column Materializecss list and we populate it with our data from a string array.

Then when our Materializecss Cards Action buttons are clicked, we show the clicked items in a dialog.

Here's what we will build:

Create ASP.NET Empty web application

First we need to create an empty ASP.NET web application:

Make sure you choose empty asp.net web app:

_Layout.cshtml

This is our master page.Remember we are using materializecss as our html frontend library.

<!DOCTYPE html>
<html>
<head>
    <title>@Page.Title</title>

    <link href="~/Assets/css/materialize.min.css" rel="stylesheet" type="text/css" />
    <link href="~/Assets/css/site.css" rel="stylesheet" type="text/css" />

    @RenderSection("head", required: false)
</head>
<body>
    <nav class="light-blue lighten-1" role="navigation">
        <div class="nav-wrapper container">
            <a id="logo-container" href="~/" class="brand-logo">Camposha.info</a>
            <ul class="right hide-on-med-and-down">
                <li><a href="~/">Home</a></li>
                <li><a href="~/about">About</a></li>
            </ul>
            <a href="" data-activates="nav-mobile" class="button-collapse"><i class="material-icons">menu</i></a>
        </div>
    </nav>

    <div class="container">
        @RenderBody()
        <br />
        <br />
        <br />
        <br />
    </div>
    <footer class="page-footer orange">
        <div class="container">
        </div>
    </footer>
</body>
</html>

index.cshtml

This is our index page:

@{
    Layout = "~/_Layout.cshtml";
    Page.Title = "Camposha.info";
    Page.Header = "Amazing Universe";
    Page.SubHeader = "Nebulae in Universe";

    String[] nebulae =
            {
                "Horse Head", "Black Widow", "Ghost Head", "Cat's Eye", "Elephant's Trunk", "Helix", "Rosette","Snake","Bernad 68",
                "Ant", "Orion", "Butterfly", "Eagle", "Own", "Ring", "Pelican", "Flame", "Witch Head", "Bumerang"
            };
}
<div>
    <h3 class="header center orange-text">@Page.Header.</h3>
    <h5 class="header center light-blue-text">@Page.SubHeader.</h5>
    <div class="row">
        <ul class="collection with-header">
            @foreach (string nebular in nebulae)
            {
                <li>
                    <div class="card blue-grey darken-1">
                        <div class="card-content white-text">
                            <span class="card-title">@nebular</span>This is the Description for @nebular
                        </div>
                        <div class="card-action">
                            <a onclick="alert('@nebular shown')">Show</a>
                            <a onclick="alert('@nebular viewed')">View</a>
                        </div>
                    </div>
                </li>
            }

        </ul>
        <a href="https://camposha.info" id="download-button" class="btn waves-effect waves-light orange">Get Started</a>
    </div>
</div>

site.css

Here's our css file:

ul {
    list-style: none;
}
ul li {
    width: 50%;
    float: left;
    border-right: 1px dotted #CCC;
    padding: 2px;
}

Explanations

Once you've created an empty ASP.NET webpages project, right click your project and add a _Layout.cshtml template as well as a Web Page.cshtml.

The Layout is our master page. So first we specify the html,head,body tags.

Specify the Page Title

We will specify the page title. WebPageBase.Page is a dynamic class that allows us to set and get the webpage properties we can easily share among our razor as well as Layout pages.

We retrieve the title from it and show as our html title:

<title>@Page.Title</title>

Reference Materialize and css files

We are using materializecss so we reference it here as well as a custom css file.

<link href="~/Assets/css/materialize.min.css" rel="stylesheet" type="text/css" />
    <link href="~/Assets/css/site.css" rel="stylesheet" type="text/css" />

Create NavigationBar

We will create our site's navigation bar, set its menu items as well as our logo:

<nav class="light-blue lighten-1" role="navigation">
        <div class="nav-wrapper container">
            <a id="logo-container" href="~/" class="brand-logo">Camposha.info</a>
            <ul class="right hide-on-med-and-down">
                <li><a href="~/">Home</a></li>
                <li><a href="~/about">About</a></li>
            </ul>
            <a href="" data-activates="nav-mobile" class="button-collapse"><i class="material-icons">menu</i></a>
        </div>
    </nav>

Render Body

This will render our index.cshtml using the RenderBody() method:

<div class="container">
        @RenderBody()
        <br />
        <br />
        <br />
        <br />
    </div>

Site Footer

We will create our materializecss site footer:

<footer class="page-footer orange">
        <div class="container">
        </div>
    </footer>

Then we move over to our index..cshtml

Specify Layout Path

First we will specify page the layout for our site:

Layout = "~/_Layout.cshtml";

Specify Page Properties

These page properties can be shared across different webpages:

    Page.Title = "Camposha.info";
    Page.Header = "Amazing Universe";
    Page.SubHeader = "Nebulae in Universe";

Create our Data Source

In this case our data source is a simple array:

 String[] nebulae =
            {
                "Horse Head", "Black Widow", "Ghost Head", "Cat's Eye", "Elephant's Trunk", "Helix", "Rosette","Snake","Bernad 68",
                "Ant", "Orion", "Butterfly", "Eagle", "Own", "Ring", "Pelican", "Flame", "Witch Head", "Bumerang"
            };

Show Site Header and SubHeader

Let's show the header and subheader of our site:

    <h3 class="header center orange-text">@Page.Header.</h3>
    <h5 class="header center light-blue-text">@Page.SubHeader.</h5>

Render Articles in Materializecss List

We will render a list of Cards with action buttons based on our C# array.

Each card will have a title and description and two action buttons.

When the buttons are clicked we show alert dialog based on the button clicked and the current nebular being viewed.

<ul class="collection with-header">
            @foreach (string nebular in nebulae)
            {
                <li>
                    <div class="card blue-grey darken-1">
                        <div class="card-content white-text">
                            <span class="card-title">@nebular</span>This is the Description for @nebular
                        </div>
                        <div class="card-action">
                            <a onclick="alert('@nebular shown')">Show</a>
                            <a onclick="alert('@nebular viewed')">View</a>
                        </div>
                    </div>
                </li>
            }

        </ul>

That's it, Cheers.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *