在ASP.NET MVC中使用AJAX刷新表
我想使用ajax更新MVC中的表。 我已经使用ajax在数据库中插入了数据。 我只想在插入新行后更新表格。
PS。 我试过搜索,但没有任何帮助我,我仍然困惑。
Here is my code: Main page View: @Html.Partial("_IPTable") "` Partial page View: ` ID Line Supplier @foreach (var item in ViewBag.IPTable)` { @item.ID @item.Line @item.Supplier }
enter code here Controller view: public ActionResult Admin() { // get data from database return View(); } public ActionResult _IPTable() { return PartialView(); }
用于插入新记录的Ajax代码:
$(document).ready(function () { //function will be called on button click having id btnsave $("#btnSave").click(function () { $.ajax( { type: "POST", //HTTP POST Method url: "AdminInsert", // Controller/View data: { //Passing data //Reading text box values using Jquery Line: $("#txtLine").val(), Supplier: $("#txtSupplier").val() } }); }); });
您可以创建一个action方法,该方法返回呈现表所需的HTML标记。 让我们创建一个视图模型,使用它来传递表数据。
public class ItemVm { public string ItemId {set;get;} public string Line {set;get;} public string Supplier {set;get;} }
现在,在您的操作方法中,从表中获取数据,加载到视图模型类的列表并发送到视图。 由于我不确定你的表结构/数据访问mecahnism。 我要对这些项目进行硬编码。 您可以用真实数据替换它。
public ActionResult TableData() { var items = new List{ new ItemVm { ItemId="A1", Line="L1", Supplier="S1" }, new ItemVm { ItemId="A2", Line="L2", Supplier="S2" } }; return PartialView("TableData",items); }
现在确保将部分视图强类型化为视图模型的集合
@model List @foreach(var item in Model) { @item.ItemId @item.Line @item.Supplier }
现在您要做的就是调用此操作方法并使用响应更新DOM。 您可以在要插入新记录的ajax调用的success
事件处理程序中执行此操作。 您可以使用jQuery load
方法来更新DOM中的相关元素。
$(document).ready(function () { $("#btnSave").click(function () { $.ajax( { type: "POST", //HTTP POST Method url: "AdminInsert", // Controller/View data: { //Passing data //Reading text box values using Jquery Line: $("#txtLine").val(), Supplier: $("#txtSupplier").val() } }).success(function() { $("#theTable").load("/YourControllerName/TableData"); }); });
现在,对于初始视图,您可以使用我们的新局部视图。 但由于它需要一个ItemVm
列表, ItemVm
您需要显式传递它而不是通过ViewBag传递它。