Problem: To create an MVC 'View' bound with a 'Model' but without creating any controller in Sitecore MVC 7.2.
We can create a view rendering passing a model to the view without any controller. Follow the below steps to create a sample view passing a custom model without using a controller.
Version used: Sitecore 7.2 with MVC 5.1
Create Model class in C# .NET(LoginModel.cs). This is the model which we are going to pass it to a view.
LoginModel.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Sitecore.MyProjSolution.Website.Models.LoginModel
{
public class LoginModel
{
public string UserName { get; set; }
public string Password { get; set; }
}
}
Create model in Sitecore.
Create view rendering in Sitecore
After creating the view rendering, under the Data section, assign values to its fields as shown below.
'Path' -> (path to the view file i.e., the .cshtml file):say "Views/Account/Login.cshtml"
Sample Login.cshtml:
@model Sitecore.MyProjSolution.Website.Models.LoginModel
<div class="dropdown-menu my-login-dropdown" style="padding:20px;">
@using (Html.BeginForm("Login", "Account", FormMethod.Post))
{
@Html.TextBoxFor(m => m.UserName, new { @class = "form-control",
@Placeholder = "Username" })
@Html.PasswordFor(m => m.Password, new { @class = "form-control",
@Placeholder = "Password" })
<input type="submit" id="btnLogin" class="btn btn-default"
value="Submit" />
}
</div>
'Model' -> CLick on 'Insert link' and select the sitecore model which we have created in the step 2 i.e, MyModel.
PlaceHolder -> select the placeHolder in which you want to render this view(placeHolder as per the Layout). Say ‘phLogin’.
Below is the a sample layout file(SampleLayout.cshtml).
<!DOCTYPE html>
<html lang="en">
<head>
<title>Sample Page</title>
</head>
<body>
<div class="header">
@Html.Sitecore().Placeholder("phHeader")
</div>
<div class="Body">
@Html.Sitecore().Placeholder("phLogin")
</div>
<div class="footer">
@Html.Sitecore().Placeholder("phFooter")
</div>
</body>
</html>
In the above tutorial, just a blank Model class is passed without any data in it. This is normally useful to create Html submit Forms which are bound to Models using the @Html.BeginForm of MVC, but if you want to populate the model at Sitecore and pass that model data to the view go through the below tutorial.
How to pass a Sitecore populated Model from sitecore to a .NET MVC view