我使用ASP.NET MVC和Razor。用户需要填充由对象列表组成的表单。所以我将控制器中的空对象列表传递给视图。这是我主要观点的一部分:
foreach ( var product in Model.Products )
{
Html.RenderPartial( "ProductPartial", product );
}
在ProductPartial中,用户为每个产品输入一些字段。 用户可以从列表中动态添加或删除产品。删除我用jquery live函数解决了,很好。但是我在添加新产品时遇到了问题。
我用这种方式解决了:点击加号,点击javascript函数调用控制器动作:
public ActionResult NewProduct()
{
Product product = new Product();
product.UniqueId = Guid.NewGuid();
return PartialView( "ProductPartial", product );
}
我需要每个产品的唯一ID,因为我希望能够通过ID访问来自jquery的产品。 添加工作正常,但它非常慢,因为我在服务器上为每个新产品。是否有一些好的方法可以让它更快?
答案 0 :(得分:0)
好吧,你可以使用jQuery.clone();而不是要求服务器提供更多相同的HTML;
在示例中,我复制列表中的第一个产品并为其指定新ID,然后将副本添加到列表末尾。
var newProductHtml = $('.MyProducts')[0].clone();
newProductHtml.attr('id', MyNewId);
newProductHtml.appendTo('.MyProductsContainer');