Hi,
Here I explain how to save form data using Ajax jquery so using this way page will not post back and data will be save.
So now let’s look how I have done
Here is my Simple View
1: @model MvcApplication1.Model.UserInformation 2: 3: @{4: ViewBag.Title = "Index";
5: Layout = "~/Views/Shared/_Layout.cshtml";
6: } 7: 8: <h2>Index</h2> 9: 10: <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
11: <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
12: <script type="text/javascript">
13: $(document).ready(function () { 14: 15: 16: 17: $("#dplist").change(function () {
18: if (this.value == 2) {
19: 20: $("#txtbox").attr('style', 'Display:inline');
21: }22: else {
23: $("#txtbox").attr('style', 'Display:none');
24: } 25: }); 26: 27: }); 28: 29: function AjaxSave() { 30: 31: var rowData = $("#" + document.forms[0].id).serialize();
32: var url = '/Home/AjaxSave';
33: 34: $.post(url, rowData, function (JsonData) { 35: 36: debugger; 37: 38: }); 39: 40: } 41: </script> 42: 43: @using (Html.BeginForm(null, null, FormMethod.Post, new { id = "signupform" }))
44: {45: @Html.ValidationSummary(true)
46: <fieldset> 47: <legend>UserInformation</legend> 48: 49: <div class="editor-label">
50: @Html.LabelFor(model => model.Name) 51: </div>52: <div class="editor-field">
53: @Html.EditorFor(model => model.Name) 54: @Html.ValidationMessageFor(model => model.Name) 55: </div> 56: 57: <div class="editor-label">
58: @Html.LabelFor(model => model.City) 59: </div>60: <div class="editor-field">
61: @Html.EditorFor(model => model.City) 62: @Html.ValidationMessageFor(model => model.City) 63: </div> 64: <div class="editor-field">
65: @Html.DropDownList("dplist",(SelectList) ViewBag.DpList)
66: @Html.TextBox("txtbox")
67: </div> 68: 69: <p>70: <input type="submit" value="Save" />
71: <input type="button" onclick="javascript:AjaxSave();" value="AjaxSave" />
72: </p> 73: </fieldset> 74: } 75: 76: <div>77: @Html.ActionLink("Back to List", "Index")
78: </div>
Here is My Controller
1: using System;
2: using System.Collections.Generic;
3: using System.Linq;
4: using System.Web;
5: using System.Web.Mvc;
6: using MvcApplication1.Model;
7: 8: namespace MvcApplication1.Controllers
9: {10: public class HomeController : Controller
11: {12: //
13: // GET: /Home/
14: 15: public ActionResult Index()
16: { 17: initilization();18: return View();
19: } 20: 21: public void initilization()
22: {23: ViewBag.bhavik= "Bhavik Test";
24: List<SelectListItem> LiList=new List<SelectListItem>();
25: AddItemInlist("One", 1, LiList, false);
26: AddItemInlist("Two", 2, LiList, false);
27: AddItemInlist("Three", 3, LiList, true);
28: AddItemInlist("Founr", 4, LiList, false);
29: AddItemInlist("Fibe", 5, LiList, false);
30: ViewBag.DpList = new SelectList(LiList, "Value", "Text");
31: 32: } 33: 34: public void AddItemInlist(string Key,Int32 value, List<SelectListItem> addtolist,bool IsSelected)
35: {36: SelectListItem Li = new SelectListItem();
37: Li.Text = Key;38: if (IsSelected)
39: {40: Li.Selected = true;
41: }42: Li.Value =value.ToString();
43: addtolist.Add(Li); 44: 45: } 46: 47: [HttpPost]48: public ActionResult Index(UserInformation u)
49: { 50: initilization(); 51: 52: 53: return View();
54: } 55: 56: [HttpPost]57: public ActionResult AjaxSave(FormCollection form)
58: {59: //Write Message what you want to display after save operation
60: string Name = form["Name"];
61: string Cist = form["City"];
62: string msg="Successfully Save Data";
63: return Json(msg);
64: } 65: 66: } 67: }
Now Look how it’s Work
Details:
Quick Point that need to take care
- I have 2 button Save and AjaxSave.
- Save will Work as data will post and redirect page.
- Using Ajaxsave I have Ajaxcall using post method.
- I need to pass all filed value on controller for that I have collect all fields value using
- $("#" + document.forms[0].id).serialize(); pass this value in parameter $.post(url, rowData, function (JsonData) {
- Now Look at JsonData that will retrurn from Controller
string msg="Successfully Save Data";
return Json(msg); You can use it to display message for what transaction has been happen
Thanks... It really helped me a lot.
ReplyDelete