我在MVC中有一个场景,我使用OPEN XML上传Excel文件来阅读电子表格,但是我不想将这些记录保存到数据库中,因为我对记录执行验证,如果验证成功,我会保存记录到数据库,这是出于性能原因,因为我可以在excel电子表格中有1000条记录,如果我先将记录保存到数据库,我能够很好地编辑,我只是从db读取它们按Id,修改然后更新/保存更改。我不想这样做,我需要让我的应用程序读取内存中的记录编辑,重新验证然后只保存有效数据,我怎么能在MVC中执行此操作,请参阅下面我当前的代码使用首先保存记录的方法,这是我想要避免的。
public async Task<ActionResult> Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
CleanSupplierClaim cleanData = await db.CleanSupplierClaims.FindAsync(id);
if (cleanData == null)
{
return HttpNotFound();
}
return View(cleanData);
}
// POST: /Claim/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit([Bind(Include = "Id,Action,Line_Number,Total_Claim,Currency,ClaimReference,ST_Key,Warning,Error_1,Error_2,Error,Domain_Username")] CleanSupplierClaim cleanData)
{
if (ModelState.IsValid)
{
if (cleanData.Id == 0)
{
db.CleanSupplierClaims.Add(cleanData);
}
else
{
db.Entry(cleanData).State = System.Data.Entity.EntityState.Modified;
}
await db.SaveChangesAsync();
//return PartialView();
}
return RedirectToAction("RedirectToValidateClaimsView");
}
提前谢谢
答案 0 :(得分:2)
HTTP是无状态的。您必须在某处编写数据。
&#34;某处&#34;可能是:
关键是,你必须在某处写数据。它不必必须您的主数据库表。但是,如果对Web应用程序的不同请求需要对相同的持久数据进行操作,则该数据需要在某处持久存在。
答案 1 :(得分:0)
如果要验证Excel文件:
Validation
就我不了解您的环境或验证标准而言,我很难为您提供任何代码。但也许上面的列表可以帮助你。