我有一个视图,显示基于他们搜索的PO的订单项列表,从文档中提取。一旦视图加载了底部的订单项,我就会得到一个" x"条目旁边的按钮,但不了解如何在不重新加载页面的情况下对视图项执行操作。
基本上,当用户完成"删除"行项目,我希望他们提交,然后表单将被放回到一起,但只是在视图上留下的行。
(注意:使用Filehelpers来解析空间分隔的文件,这就是为什么有额外的运行和流和字符串的原因。另请注意;新的!)
班级 -
namespace WebDocumentEditor
{
public class LineItemListInfo
{
public string asiLineNumber { get; set; }
public string itemSKU { get; set; }
public string itemQTY { get; set; }
public string itemUOM { get; set; }
public string itemPrice { get; set; }
}
}
控制器构建列表:
public ActionResult SearchForPODocument(string POinput)
{
string contents = string.Empty;
if (POinput == "" | POinput == null)
{
return RedirectToAction("Index");
}
LoadConfigValues();
foreach (string file in Directory.GetFiles(exportsArchive))
{
using (var stream = new StreamReader(file))
{
contents = stream.ReadToEnd().ToString();
if (contents.Contains(POinput))
{
SendPOfor850Trim(contents, POinput);
ViewBag.DocumentWithPO = documentWithPO;
SendFoundPOForASIHDRParse(documentWithPO);
SendFoundPOForASISTAParse(documentWithPO);
SendFoundPOForASILINParse(documentWithPO);
break;
}
}
}
ViewBag.PoNotFound = "PO Not Found";
return View();
}
//Helper Method to break up info from ASISLIN Line
public void SendFoundPOForASILINParse(string documentWithPO)
{
var engine = new FileHelperEngine<ParseASILIN>();
var result = engine.ReadString(documentWithPO);
foreach (ParseASILIN parse in result)
{
if (parse.lineID.Contains("ASILIN"))
{
//action on ASILIN line found
SetupLineItemInfo(parse.asiLineNumber, parse.itemSKU, parse.itemQTY, parse.itemUOM, parse.itemPrice);
}
ViewBag.LineItemList = lineItemList;
}
}
//This moves the parsed info into the LineItemLiftInfo class properties to be appended as a whole line
public void SetupLineItemInfo(string asiLineNumber, string itemSKU, string itemQTY, string itemUOM, string itemPrice)
{
LineItemListInfo fullLineItemCombined = new LineItemListInfo();
fullLineItemCombined.asiLineNumber = asiLineNumber;
fullLineItemCombined.itemSKU = itemSKU;
fullLineItemCombined.itemQTY = itemQTY;
fullLineItemCombined.itemUOM = itemUOM;
fullLineItemCombined.itemPrice = itemPrice;
lineItemList.Add(fullLineItemCombined);
}
查看:
<ul id="lineItems" class="list-unstyled">
<li>
ASILineNumber | Item Price | Item Quantity | Item SKU | Item Unit Of Measurement
</li>
@foreach (var item in (List<LineItemListInfo>)ViewBag.LineItemList)
{
<li>
<button type="button" id="removeLine"class="glyphicon glyphicon-remove"></button>
@item.asiLineNumber | @item.itemPrice | @item.itemQTY | @item.itemSKU | @item.itemUOM
</li>
}
</ul>
答案 0 :(得分:2)
您需要以某种方式标记要删除客户端的项目,然后将该状态发回服务器。利用视图模型,您可以添加其他属性,例如bool Delete
。然后,在服务器端,您可以使用标记为true的bool过滤项目,并将其从集合中删除。
如果您不想使用视图模型,那么您可以每次点击&#34; x&#34;删除发送一个AJAX请求到某个服务器端端点,然后实际删除该实体。在您的AJAX中,您只需发布类似主键的内容,然后使用它来删除数据库中的项目。