提交内容后更新
action:
public ActionResult Index() { return View(_entities.GuestSet.ToList()); } // POST: /GuestBook/Create public ActionResult Create(Guest guestToCreate) { _entities.AddToGuestSet(guestToCreate); _entities.SaveChanges(); return PartialView("Guests", _entities.GuestSet.ToList()); }
view:
Guest Book
<% using (Ajax.BeginForm("Create", new AjaxOptions {UpdateTargetId="divMessages" })) { %> <%= Html.TextBox("Name")%> <%= Html.TextArea("Message")%> <% } %><% Html.RenderPartial("Guests"); %>
<% foreach (var item in Model) { %><% } %><%= Html.Encode(item.Name) %>
<%= Html.Encode(item.Message) %>
异步提交
action:
public ActionResult Index() { return View(_entities.MovieSet.ToList()); } // GET: /Movie/Create public ActionResult Create() { return View(); } // POST: /Movie/Create [AcceptVerbs(HttpVerbs.Post)] public string Create(Movie movieToCreate) { try { _entities.AddToMovieSet(movieToCreate); _entities.SaveChanges(); return "Inserted new movie " + movieToCreate.Title; } catch { return "Could not insert movie " + movieToCreate.Title; } }
view:
create <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> <% using (Ajax.BeginForm(new AjaxOptions {OnSuccess="createSuccess"})) { %><% } %>
<%=Html.ActionLink("Back to List", "Index") %>
显示进度条
action:
[AcceptVerbs(HttpVerbs.Post)] public string Create(Movie movieToCreate) { Thread.Sleep(5 * 1000); try { _entities.AddToMovieSet(movieToCreate); _entities.SaveChanges(); return "Inserted new movie " + movieToCreate.Title; } catch { return "Could not insert movie " + movieToCreate.Title; } }
view:
<% } %> <%= Html.ValidationSummary("Create was unsuccessful. Please correct the errors and try again.") %> <% using (Ajax.BeginForm(new AjaxOptions {OnSuccess="createSuccess", LoadingElementId="divLoading"})) { %>
<%=Html.ActionLink("Back to List", "Index") %>
异步检索内容
action:
public ActionResult Index() { return View(_entities.CategorySet.ToList()); } public ActionResult Details(int id) { var products = from p in _entities.ProductSet where p.CategoryId == id select p; return PartialView("Details", products); }
view:
- <% foreach (var category in Model) { %>
- <%= Ajax.ActionLink(category.Name, "Details", new {id=category.Id}, new AjaxOptions {UpdateTargetId="divDetails"}) %> <% } %>
异步删除
action:
[AcceptVerbs(HttpVerbs.Delete)]//ajax public ActionResult Delete(int id) { var movieToDelete = (from m in _entities.MovieSet where m.Id == id select m).FirstOrDefault(); _entities.DeleteObject(movieToDelete); _entities.SaveChanges(); return PartialView("Movies", _entities.MovieSet.ToList()); } [ActionName("Delete")] public ActionResult Delete_GET(int id) { var movieToDelete = (from m in _entities.MovieSet where m.Id == id select m).FirstOrDefault(); return View(movieToDelete); } [AcceptVerbs(HttpVerbs.Post)] [ActionName("Delete")] public ActionResult Delete_POST(int id) { var movieToDelete = (from m in _entities.MovieSet where m.Id == id select m).FirstOrDefault(); _entities.DeleteObject(movieToDelete); _entities.SaveChanges(); return RedirectToAction("Index"); }
view:
- <% foreach (var movie in Model) { %>
- <%= movie.Title %> <%= Ajax.ActionLink("Delete", "Delete", new {id=movie.Id}, new AjaxOptions {HttpMethod="DELETE", Confirm="Delete record?", UpdateTargetId="divMovies" })%> <% } %>
Using the AcceptAjax Attribute
attribute:
public sealed class AcceptAjaxAttribute : ActionMethodSelectorAttribute{public override bool IsValidForRequest(ControllerContext➥controllerContext, MethodInfo methodInfo){if (controllerContext == null){throw new ArgumentNullException(“controllerContext”);}return controllerContext.HttpContext.Request.IsAjaxRequest();}}
controller:
public class SelectorController : Controller{private ProductsDBEntities _entities = new ProductsDBEntities();public ActionResult Index(){var categories = _entities.CategorySet.ToList();var products = new List();return View(new ProductsVDM(categories, products));}[AcceptAjax][ActionName(“Details”)]public ActionResult Details_Uplevel(int id){var products = from p in _entities.ProductSetwhere p.CategoryId == idselect p;return PartialView(“Details”, products);}[ActionName(“Details”)]public ActionResult Details_Downlevel(int id){var categories = _entities.CategorySet.ToList();var products = from p in _entities.ProductSetwhere p.CategoryId == idselect p;return View(“Index”, new ProductsVDM(categories, products));}}