我有一个使用 ASP.NET WebForms 构建的现有 Web 应用程序,我正在将其转换为 MVC 4.0。我有一个管理页面,允许用户在同一页面上为员工执行 CRUD 操作,例如编辑地址或通过动态添加用户控件同时添加多个地址。我已经实现了 ListView 用于在同一页面上显示、编辑和保存。现在,如果我想实现相同的目标,即在 MVC 中的同一视图上显示/编辑/保存,有人可以建议这种情况的良好做法。(ps 我已经为此类 CRUD 操作准备了部分视图)
任何帮助将不胜感激。
我有一个使用 ASP.NET WebForms 构建的现有 Web 应用程序,我正在将其转换为 MVC 4.0。我有一个管理页面,允许用户在同一页面上为员工执行 CRUD 操作,例如编辑地址或通过动态添加用户控件同时添加多个地址。我已经实现了 ListView 用于在同一页面上显示、编辑和保存。现在,如果我想实现相同的目标,即在 MVC 中的同一视图上显示/编辑/保存,有人可以建议这种情况的良好做法。(ps 我已经为此类 CRUD 操作准备了部分视图)
任何帮助将不胜感激。
是的,有很多方法可以在 MVC 中实现这一点。就像 ListView 一样,MVC 中也有很多第三方控件充当 ListView。但是如果您不想使用那些第三方控件,那么您可以使用 Table、Tr 和 Td。为此,让我们举个例子。您的模型正在返回数据列表,因此您需要在视图上显示该列表。因此,获取该列表并使用 foreach 循环并仅使用 Table、TH、TR 和 TD。您可以使用@Html.ActionLink 进行编辑、删除等。希望这会帮助你。
我在 MVC 中实现了类似的东西:
看法:
// Creating html Table from data present in model
<table class="content-wrapper">
<tr>
<th>
@Html.DisplayName("Name")
</th>
<th>
@Html.DisplayName("ID")
</th>
<th>
@Html.DisplayName("Designation")
</th>
<th>
</th>
</tr>
@foreach (var item in Model.lstEmployees)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.id)
</td>
<td>
@Html.DisplayFor(modelItem => item.designation)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.id })
@Html.ActionLink("Delete", "Delete", new { id = item.id })
</td>
</tr>
}
控制器:
public ActionResult Delete(Data model)
{
//Code for delete
return View("Index", data);
}
[HttpGet]
public ActionResult Edit(Int32 Id)
{
//code for binding the existing records
return View(_data);
}
[HttpPost]
public ActionResult Edit(string sampleDropdown, Data model)
{
//code for saving the updated data
return RedirectToAction("Index", "Home");
}
因为我想使用相同的视图来显示/编辑/保存,所以我找到了一个解决方案来实现 AJAX 并为 CRUD 操作呈现部分视图。这可以通过多种方式实现,但我选择了两个选项:
使用 @Ajax.BeginForm 和 jquery.unobtrusive-ajax.min 并获取部分视图。
使用 jQuery AJAX 来实现这一点。
这是我在 Stackoverflow 中发现的一个非常有用的链接: Using Ajax.BeginForm with ASP.NET MVC 3 Razor
(感谢大家的努力)