Go through previous tutorial use business library as modal before preceding this
tutorial. In Last tutorial we generated a student data modal
Step(1) : -In this Modal if i click on “Create New”
link it goes to “http://localhost:12542/Student/Create”
url , Means it expect Create method in Student controller but it didn’t get
that so it gives exception , So get rid of this problem let’s write a “Create”
method
using System;
using
System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BusinessLayer;
namespace
MvcApplication2.Controllers
{
public
class StudentController
: Controller
{
public ActionResult
Index()
{
BusinessLogic BL = new
BusinessLogic();
List<Student>
student = BL.student.ToList();
return View(student);
}
[HttpGet]
public ActionResult
Create()
{
return View();
}
}
}
|
Here if we see that this “Create” method is designed
with “[HttpGet]”
means this method responds only for the Get request or we can say that when
user will come to this “http://localhost:12542/Student/Create”
url. It will not work for Post method.
Step(2) : - Let’s create a view for this “Create Method
by right click on this method and add a view
Here modal class as “Student” and Scaffold template as
Create ,this will automatically create a view. In generated view code make some
changes for changing “Gender” textbox to as Dropdown box , So View code will
like following code
At this time if you will run your application and click on “Create New” Link it will give error for @Scripts.Render("~/bundles/jqueryval")
So before run this application remove this line from
your view code (it will at last) ,We will discuss on this in later tutorial.
So the view code will be
@model BusinessLayer.Student
@{
ViewBag.Title = "Create";
}
<h2>
Create</h2>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<fieldset>
<legend>Student</legend>
<div class="editor-label">
@Html.LabelFor(model
=> model.StudentName)
</div>
<div class="editor-field">
@Html.EditorFor(model
=> model.StudentName)
@Html.ValidationMessageFor(model
=> model.StudentName)
</div>
<div class="editor-label">
@Html.LabelFor(model
=> model.Gender)
</div>
<div class="editor-field">
@Html.DropDownList("Gender", new
List<SelectListItem>
{
new SelectListItem { Text = "Male",
Value="Male" },
new SelectListItem { Text = "Female",
Value="Female" }
}, "Select Gender")
</div>
<div class="editor-label">
@Html.LabelFor(model
=> model.StudentClass)
</div>
<div class="editor-field">
@Html.EditorFor(model
=> model.StudentClass)
@Html.ValidationMessageFor(model
=> model.StudentClass)
</div>
<p>
<input type="submit"
value="Create"
/>
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back
to List", "Index")
</div>
|
Step(3): - when you will run your application and click
on “create new” then o/p will be
Step(4) : Here in above o/p or screen if we click on Create button ,then it gives error
that resource not found because we didn’t
create method for this. Means we have create [HttpPost] method.
Let’s create a
stored procedure for insertion data into database table
Create procedure
insertStdDetail
@StudentName nvarchar(50),
@Gender nvarchar (10),
@SchoolName nvarchar
(50)
as
Begin
Insert into dbo.StudentInfo (StudentName,
Gender, SchoolName )
Values (@StudentName, @Gender,
@SchoolName)
End
|
Step(5):- Go to BusinessLayer library project and in “BusinessLogic.cs” Class write
a method for inserting value in database. For that take the following code
public void InsertStudentDetail(Student
student)
{
string connectionString =
ConfigurationManager.ConnectionStrings["Connect"].ConnectionString;
using (SqlConnection
con = new SqlConnection(connectionString))
{
SqlCommand cmd = new
SqlCommand("insertStdDetail",
con);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter
paramName = new SqlParameter();
paramName.ParameterName = "@StudentName";
paramName.Value = student.StudentName;
cmd.Parameters.Add(paramName);
SqlParameter paramGender = new SqlParameter();
paramGender.ParameterName = "@Gender";
paramGender.Value = student.Gender;
cmd.Parameters.Add(paramGender);
SqlParameter paramCity = new SqlParameter();
paramCity.ParameterName
= "@SchoolName";
paramCity.Value = student.StudentClass;
cmd.Parameters.Add(paramCity);
con.Open();
cmd.ExecuteNonQuery();
}
}
|
Step(6): -Write a post method in Student controller
class of Create method , Take the following code
using System;
using
System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using BusinessLayer;
namespace
MvcApplication2.Controllers
{
public
class StudentController
: Controller
{
public ActionResult
Index()
{
BusinessLogic BL = new
BusinessLogic();
List<Student>
student = BL.student.ToList();
return View(student);
}
[HttpGet]
public ActionResult
Create()
{
return View();
}
//Post
Method for inserting data into database
[HttpPost]
public ActionResult
Create(FormCollection formCollection)
{
Student student = new
Student();
student.StudentName = formCollection["StudentName"];
student.Gender =
formCollection["Gender"];
student.StudentClass = formCollection["StudentClass"];
BusinessLogic BL =new
BusinessLogic();
BL.InsertStudentDetail(student);
return RedirectToAction("Index");
}
}
}
|
We can create this method using parameters
[HttpPost]
public ActionResult Create(string name, string gender, string studentClass) { Student student = new Student(); student.StudentName = name; student.Gender = gender; student.StudentClass = studentClass; BusinessLogic BL =new BusinessLogic();
BL.InsertStudentDetail(student);
return RedirectToAction("Index");
} |
Basically we use “FormcCllection for getting Key and
values.
Step(7):- Click on Create new link you will see screen
and fill value and click on “Create” button.
After click on button it redirect to main page with
updated student detail.
No comments:
Post a Comment