Application crashes when passing ViewModel to the Controller - c#

When I pass the view model to the method it crashes but it works with FormCollection or not passing anything to the onpost method.
[HttpPost]
[AutoValidateAntiforgeryToken]
public ActionResult Update(CustomerInformation model)
{
if (ModelState.IsValid)
{
//save
var UpdateRecord = customerServices.Update(model);
if (UpdateRecord)
{
return RedirectToAction("Details");
}
}
}
#model Customer.Models.CustomerInformationDetails
#using Customer.Models.CustomerInformation
#{
var customerName = Model.Name;
ViewData["Title"] = customerName;
}
<h1>Edit information for #customerName</h1>
<hr />
#using (Html.BeginForm("Update",
"Customer",
FormMethod.Post))
{
<div class="form-group">
#Html.Label("Introduction", "Introduction:", htmlAttributes: new { #class = "control-label col-md-10" })
<div class="col-md-10">
#Html.EditorFor(model => model.Introduction, new { htmlAttributes = new { #class = "form-control" } })
</div>
</div>
<div class="form-group">
#Html.Label("Contact Person", "Contact Person:", htmlAttributes: new { #class = "control-label col-md-10" })
<div class="col-md-10">
#Html.EditorFor(model => model.ContactPerson, new { htmlAttributes = new { #class = "form-control" } })
</div>
</div>
<div class="form-group">
<input type="submit" value="Update" class="btn btn-primary"></input>
</div>
}

Add
return View(model)
outside of your if statement.
Currently if it fails it has nothing to return.

Related

View returns null to a controller, accepting ViewModel

I have a problem with my controller. It accepts null.
First of all I've got such ViewModel
public class FilmVM
{
public Film Film { get; set; }
public IEnumerable<Image> Images { get; set; } = new List<Image>();
public IEnumerable<SimilarFilm> SimilarFilms { get; set; } = new List<SimilarFilm>();
}
Controller looks like
public ActionResult Edit(FilmVM film)
{
_unitOfWork.Film.Update(film);
return RedirectToAction("Index");
}
Index action looks like
public ActionResult Index(int? page)
{
int pageSize = Constaints.Constaint.FilmsCount;
int pageNumber = page ?? 1;
var films = _unitOfWork.Film.GetDatas();
return View(films.ToPagedList(pageNumber, pageSize));
}
Models in VM are defaults like Guid, name, etc.
View model looks like
#model GuessTheMovieApp.ViewModels.FilmVM
#{
ViewBag.Title = "Edit";
}
<div class="wrapper">
<h2>Edit</h2>
#using (Html.BeginForm("Edit", "Films", FormMethod.Post, new { #class = "form-edit-film" }))
{
#Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Editing Film</h4>
#Html.ValidationSummary(true, "", new { #class = "text-danger" })
#Html.Partial("EditFilm", Model.Film)
<div class="form-group">
<div class="form-group__input">
<input type="submit" value="Save" class="btn btn-success" />
</div>
</div>
</div>
}
</div>
<div>
#Html.ActionLink("Back to List", "Index")
</div>
Partial View looks like
#model GuessTheMovieApp.Models.DataBase.Film
<div class="form-horizontal">
<h4>Film</h4>
<hr />
#Html.HiddenFor(model => model.FilmId)
<div class="form-group">
#Html.LabelFor(model => model.Name, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Name, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Name, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Year, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Year, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Year, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Genre, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Genre, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Genre, "", new { #class = "text-danger" })
</div>
</div>
</div>
they are common, I think.
I saw similar question on stackoverflow, but it didn't helped me. So I'm asking if someone knows an answer on such question, please help.
UPD
Figured out how to work with this by changing Action Edit to this format
public ActionResult Edit(Film films, IEnumerable<Image> images, IEnumerable<SimilarFilm> similarFilms)
{
_unitOfWork.Film.Update(new FilmVM { Film = films, Images = images, SimilarFilms = similarFilms });
_unitOfWork.Save();
return RedirectToAction("Index");
}
I don't think you can prevent your controller from accepting null at the parameter level, the best you can do is to do a null check on the object coming in before you call your _unitofWork
try to use the same model for view, partial view and action. You can use FilmVm as well as any another model. For example you can use Film in this case
#model GuessTheMovieApp.ViewModels.Film
.....
<partial name="EditFilm" />
......
and action
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Film film)
{
var filmVm= new FilmVm { Film=film}
.....
}

Html.BeginForm post null model

I have created a create page using asp.net scafolding and below is my page to create expenses.
#model ExpenCare.Models.ExpenseCategory
#{
ViewBag.Title = "CreateExpenseCategories";
}
<div class="row">
#Html.Partial("_RightSidePane")
<div class="col-10 col-sm-8 col-xs-8 col-md-10">
<div class="tab-content" id="nav-tabContent">
<div class="tab-pane fade show active" id="list-Profile-Content" role="tabpanel" aria-labelledby="list-Profile">
#using (Html.BeginForm("CreateExpenseCategories", "Admin", FormMethod.Post))
{
#Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>ExpenseCategory</h4>
<hr />
#Html.ValidationSummary(true, "", new { #class = "text-danger" })
<div class="form-group">
#Html.LabelFor(model => model.Expense, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Expense, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Expense, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Description, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Description, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Description, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>
On create this page post data to CreateExpenseCategories method of Admin controller.
public ActionResult CreateExpenseCategories(ExpenseCategory expense)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:1888/api/");
var responseTask = client.PostAsJsonAsync("ExpenseCategories", expense);
responseTask.Wait();
var result = responseTask.Result;
if (result.IsSuccessStatusCode)
{
return RedirectToAction("ExpenseCategories");
}
else
{
ModelState.AddModelError(string.Empty, "Server Error. Please contact administrator.");
}
return View("ExpenseCategories/CreateExpenseCategories", model: expense);
}
The model used to create this page is as below,
namespace ExpenCare.Models
{
public class ExpenseCategory
{
public int Id { get; set; }
[Required]
public string Expense { get; set; }
public string Description { get; set; }
public Company Company { get; set; }
}
}
When I create an expense this always give null exception error and when I debug, the posted data model is null. This must be a small issue for sure, because I have done other create pages in similar way and I did nit encounter any issue. I must be missing a small thing and this might be a stupid question, but I can't find why this gives a null exception error on post.
I think the problem is the usage of Html.EditorFor,
Try this
#Html.TextBoxFor(model => model => model.Expense,new { #class = "form-control" })
or
#Html.EditorFor(model => model.Expense,null,"Expense",new { htmlAttributes = new { #class = "form-control" } } )
Edit problem solved
Property on type ExpenseCategory has the same parameter 'expense'. Change
public ActionResult CreateExpenseCategories(ExpenseCategory expense)
to
public ActionResult CreateExpenseCategories(ExpenseCategory model)
In your model the Id field is not null able Probably you should add an input or hidden input for it to correct model binding:
#Html.HiddenFor(model => model.Id)
Revise:
I test this case and model binding in mvc is working and setting default value for id. Entirely in absence of an input in form model binding in mvc still working. This behavior is sense because all fields by default are optional and we can set required attribute to enforce inputting them.

C# MVC can't retrieve data from view to controller [duplicate]

This question already has answers here:
Asp.Net MVC: Why is my view passing NULL models back to my controller?
(2 answers)
Closed 4 years ago.
I am new to ASP.Net and I am sure this is a very basic question. I have a employee crud views . In create view i was created viewModel to pass different two model . One Model display emloyee and another model connect to db and retrieve all departments to my view . But I can't retrieve data to my employee create controller area. Vs send this err Abc.Models.MyViewModel.Employee.get returned null. On Debug.Print(employee.Employee.Name) line.
Here my Models ;
Employee.cs
public class Employee
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Surname { get; set; }
[Required]
public string phoneNumber { get; set; }
public string Detail { get; set; }
//Bu kısımda veri tabanı ilişkisi 1 to many olacak
public int DepartmentId { get; set; }
public Department Department { get; set; }
}
Department.cs
public class Department
{
public int Id { get; set; }
public string depName { get; set; }
public List<Employee> Employees { get; set; }
}
MyViewModel.cs
public class MyViewModel
{
public Employee Employee { get; set; }
public IEnumerable<Department> departments { get; set; }
}
I added dropboxlist on my create.cshtml area with MyViewModel and i can't retrieve all data on my controller .
Here my EmployeeController.cs ;
// GET: Employee/Create
[HttpGet]
public ActionResult Create()
{
MyViewModel viewModel = new MyViewModel();
Employee emp = new Employee();
viewModel.Employee = emp;
viewModel.departments = db.Departments;
return View(viewModel);
}
// POST: Employee/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(/*[Bind(Include = "Id,Name,Surname,phoneNumber,Department,Detail")]*/ MyViewModel employee)
{
//string emName = employee.Employee.Name;
Debug.Print(employee.Employee.Name);
if (ModelState.IsValid)
{
db.Employees.Add(employee.Employee);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(employee);
}
Here Create.cshtml "this html codes are in #using (Html.BeginForm()");
#model TelefonRehberi.Models.MyViewModel
<div class="form-horizontal">
<h4>Employee</h4>
<hr />
#Html.ValidationSummary(true, "", new { #class = "text-danger" })
<div class="form-group">
#Html.LabelFor(model => model.Employee.Name, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.Name, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.Name, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Employee.Surname, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.Surname, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.Surname, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Employee.phoneNumber, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.phoneNumber, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.phoneNumber, "", new { #class = "text-danger" })
</div>
</div>
<!--Dropdown List Olacak-->
<div class="form-group">
#Html.LabelFor(model => model.Employee.Department, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
<!--Burada zorlandım umarım doğru kullanım olmuştur.-->
#Html.DropDownListFor(m => m.Employee.Department, new SelectList(Model.departments.Select(i => i.depName)), " - Select or Add -", new { #class = "form-control" })
#Html.ValidationMessageFor(model => model.Employee.Department, "", new { #class = "text-danger" })
</div>
</div>
<!--Dropdown List Sonu Ayarlamalar Yapılacak.-->
<div class="form-group">
#Html.LabelFor(model => model.Employee.Detail, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.Detail, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.Detail, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
Add Form and try to do
#using (Html.BeginForm("ActionName","ControllerName", FormMethod.Post))
{
<div class="form-horizontal">
<!--add your other code here -->
<!--add your other code here -->
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
HTML Forms are required, when you want to collect some data from the site visitor. For example, during user registration you would like to collect information such as name, email address, credit card, etc.
A form will take input from the site visitor and then will post it to a back-end application such as CGI, ASP Script or PHP script etc. The back-end application will perform required processing on the passed data based on defined business logic inside the application.
There are various form elements available like text fields, textarea fields, drop-down menus, radio buttons, checkboxes, etc.
Ok, you were really close. In Create method you need to create Employee employee and not MyViewModel employee. So in controller just put this Create method:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Employee employee)
{
Debug.Print(employee.Name);
if (ModelState.IsValid)
{
//db.Employees.Add(employee);
//db.SaveChanges();
return RedirectToAction("Index");
}
return View(employee);
}
Then binding will work just fine and you will get your employee from the form.
Just in case bellow is also the code for the form in the Create View.
<h2>Create</h2>
#using (Html.BeginForm("Create", "Employee", FormMethod.Post))
{
<div class="form-horizontal">
<h4>Employee</h4>
<hr />
#Html.ValidationSummary(true, "", new { #class = "text-danger" })
<div class="form-group">
#Html.LabelFor(model => model.Employee.Name, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.Name, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.Name, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Employee.Surname, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.Surname, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.Surname, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.Employee.phoneNumber, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.phoneNumber, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.phoneNumber, "", new { #class = "text-danger" })
</div>
</div>
<!--Dropdown List Olacak-->
<div class="form-group">
#Html.LabelFor(model => model.Employee.Department, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
<!--Burada zorlandım umarım doğru kullanım olmuştur.-->
#Html.DropDownListFor(m => m.Employee.Department, new SelectList(Model.departments.Select(i => i.depName)), " - Select or Add -", new { #class = "form-control" })
#Html.ValidationMessageFor(model => model.Employee.Department, "", new { #class = "text-danger" })
</div>
</div>
<!--Dropdown List Sonu Ayarlamalar Yapılacak.-->
<div class="form-group">
#Html.LabelFor(model => model.Employee.Detail, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.Employee.Detail, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.Employee.Detail, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}

Razor populating drop down list

On my page I want to include a list of members in a drop down list but I am not sure how exactly I could do this.
How would I populate a drop down list with the members that I am passing with the controller?
This is my controller
//Add Event
public ActionResult CreateEvent()
{
var members = db.ClubMembers.ToList();
return View(members);
}
//Add Event
[HttpPost]
public ActionResult CreateEvent(ClubEvent incomingEvent)
{
try
{
if (ModelState.IsValid)
{
using (var db = new UltimateDb())
{
db.ClubEvents.Add(incomingEvent);
db.SaveChanges();
}
return RedirectToAction("Index");
}
return View();
}
catch
{
return View();
}
}
This is the view I will be using
#model ultimateorganiser.Models.ClubEvent
#{
ViewBag.Title = "CreateEvent";
}
<h2>CreateEvent</h2>
#using (Html.BeginForm())
{
#Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>ClubEvent</h4>
<hr />
#Html.ValidationSummary(true, "", new { #class = "text-danger" })
#*Event Title*#
<div class="form-group">
#Html.LabelFor(model => model.EventTitle, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.EventTitle, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.EventTitle, "", new { #class = "text-danger" })
</div>
</div>
#*Event Description*#
<div class="form-group">
#Html.LabelFor(model => model.EventDesc, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.EventDesc, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.EventDesc, "", new { #class = "text-danger" })
</div>
</div>
#*Event Type*#
<div class="form-group">
#Html.LabelFor(model => model.eventType, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EnumDropDownListFor(model => model.eventType, htmlAttributes: new { #class = "form-control", #id = "dropdown" })
#Html.ValidationMessageFor(model => model.eventType, "", new { #class = "text-danger" })
</div>
</div>
#*Add People*#
#*<div class="form-group">
Add Members
<div class="col-md-10">
Drop Down List of members will go here
</div>
</div>*#
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
The best way to pass data between views and action methods are view models.We will go that way.
First create a new view model for the create view.
public class CreateEventVm
{
public string EventDescription {set;get;}
public List<SelectListItem> Members {set;get;}
public int MemberId {set;get;}
}
and in your GET action
public ActionResult Create()
{
var vm = new CreateEventVm();
var db= new UltimateDb();
vm.Members =db.Members.Select(s=> new SelectListItem
{ Value=s.Id.ToString(),
Text = s.Name
}).ToList();
return View(vm);
}
And your create razor view which is strongly typed to our new CreateEventVm
#model CreateEventVm
#using(Html.BeginForm())
{
<label>Description</label>
#Html.TextBoxFor(s=>s.EventDescription)
<label>Member</label>
#Html.DropDownListFor(s=>s.MemberId,Model.Members,"Select one")
<input type="submit" />
}
And in your HttpPost action method
[HttpPost]
public ActionResult Create(CreateEventVm model)
{
if(ModelState.IsValid)
{
using (var db = new UltimateDb())
{
var event = new ClubEvent();
event.EventDescription = model.EventDescription;
//Set other properties also from view model.
db.ClubEvents.Add(event);
db.SaveChanges();
}
// Redirect to another action after successful save (PRG pattern)
return RedirectToAction("SavedSuccessfully");
}
vm.Members =db.Members.Select(s=> new SelectListItem
{ Value=s.Id.ToString(),
Text = s.Name
}).ToList();
return View(vm);
}

How to bind Model Fields inside another Model in the Controller?

I have a Model (Register.cs) that contains 2 other Model (ProfileMeta ,ProfileDetail) as fields. How do I bind these 2 Model fields in my Controller class? When I name my 2 field objects the same as the Model file names, as I've seen. When I reference them in ProfileController, they're seen as types and not objects.
Error 26 An object reference is required for the non-static field, method, or property 'ContosoUniversity.Models.ProfileMeta.password.get' C:\Projects\DatingSite\datingSite\ContosoUniversity\Controllers\ProfileController.cs 63 40 DatingSiteInitial
However, when I rename them to different names, and refer them like so in ProfileController, I get the compilation error below:
" doesn't exist in the current context"
Models/Register.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace ContosoUniversity.Models
{
public class Register
{
public ProfileMeta ProfileMeta { get; set; }
public ProfileDetail ProfileDetail { get; set; }
}
}
Controllers/ProfileController.cs:
// POST: Profiles/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "ProfileMeta,ProfileDetail")] Register register)
{
if (ModelState.IsValid)
{
//Add 1 ProfileMeta row and 1 linked ProfileDetail row
ProfileMeta profileMeta = new ProfileMeta();
//How to refer to bound: ProfileMeta, ProfileDetail fields inside Register.cs?
profileMeta.Username = ProfileMeta.Username;
profileMeta.password = ProfileMeta.password;
profileMeta.ID = ProfileDetail.ID;
db.ProfileDetails.Add(ProfileDetail);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(profileDetail);
}
Views/Profile/Create.cshtml:
#model ContosoUniversity.Models.Register
#{
ViewBag.Title = "Create";
}
<h2>Create</h2>
#using (Html.BeginForm())
{
#Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Profile</h4>
<hr />
#Html.ValidationSummary(true, "", new { #class = "text-danger" })
<div class="form-group">
#Html.LabelFor(model => model.ProfileMeta.Username, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.ProfileMeta.Username, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.ProfileMeta.Username, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.ProfileMeta.password, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.ProfileMeta.password, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.ProfileMeta.password, "", new { #class = "text-danger" })
</div>
</div>
<div class="form-group">
#Html.LabelFor(model => model.ProfileDetail.Age, htmlAttributes: new { #class = "control-label col-md-2" })
<div class="col-md-10">
#Html.EditorFor(model => model.ProfileDetail.Age, new { htmlAttributes = new { #class = "form-control" } })
#Html.ValidationMessageFor(model => model.ProfileDetail.Age, "", new { #class = "text-danger" })
</div>
</div>
...
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
<div>
#Html.ActionLink("Back to List", "Index")
</div>
#section Scripts {
#Scripts.Render("~/bundles/jqueryval")
}

Categories