我有一个带有表单的模态窗口,我想将输入的数据返回到部分视图并在添加它们时列出它们。我已经有了带有 Ajax.BeginForm() 的模态窗口,我将数据传递给部分视图通过 ViewBag 查看,但不好的是一次只添加一个,而我想要添加更多。
例子:
就像您在 x super 中购买时,扫描了 n 个产品,但在您拥有所有产品之前不会打印票,我想做同样的事情,但在列表中有 n 个对象之前不将其保存在数据库中。
如何将数据保留在列表中,直到您想要保存它而不删除以前的数据?这是我的代码示例,希望您能帮助我:
带有模态窗口的主视图
@model Proyecto.Models.Objeto
<div class="row">
<div class="col-md-12">
<input type="text" class="form-control" name="Cantidad" >
</div>
</div>
<div class="panel-body" id="Objetos">
</div>
<div id="myModal" class="modal fade" role="dialog">
@using (Ajax.BeginForm("AgregarObjeto", new AjaxOptions {UpdateTargetId = "Objetos" }))
{
<div class="col-md-12">
<input type="text" class="form-control" name="Carecteristica1"/>
</div>
}
</div
控制器
公共 ActionResult AddProduct(Object object) {
对象对象 = 新对象();对象.特征=对象.特征;ViewBag.objects = 对象;返回 PartialView("_PartialView"); }
局部视图
我有这样的:
<div class="col-md-4">
ViewBag.Objeto.NombreObjeto
</div>
<div class="col-md-4">
ViewBag.Objeto.Caracteristica1
</div>
<div class="col-md-4">
ViewBag.Objeto.Caracteristica2
</div>
这就是我想做的事情
从我从问题中可以理解的情况来看,您在保留从模态表单中添加的信息时遇到了麻烦。
我准备了一个演示,可以作为一个起点。它是用纯 JavaScript 编写的。
这个演示的想法是向您展示您也可以在添加数据时保留数据,而无需将其传输到服务器,以添加到列表中,因此您不再需要调用控制器方法
AgregarProducto()
。一切都使用 JavaScript 在客户端级别完成。在示例代码中,“添加到列表”按钮执行两个函数
agregarObjetos()
和listarObjetos(id, data)
.AddObjects() 函数:在这个函数中我们捕获从模态表单输入的值。
ListarObjetos(id, data) 函数:此函数接收两个参数:将显示包含已添加对象的表的 div 标记的标识符和数据数组(对象列表)。
因此,一旦您在屏幕上获得了对象列表,您就可以使用以下代码发送所有数据。
上述函数将 JSON 格式的对象数组发送到 url。
因此,您需要一个 MVC5 控制器中的方法来接收对象列表。
类似于以下内容:
模型:
属性名称必须与使用 JavaScript 从客户端发送的内容相匹配。
控制器中的方法:
我把完整的例子留给你,这样你就可以复习了。