我有一个带有三列的表
- srcsys(CompositeKey part I(
- CUSTID(CompositeKey Part II(
- custnm
我是ASP&从MVC核心开始。
以下获取方法的代码效果很好:
public async Task<IActionResult> Delete(string _SrcSys, string _CustId)
{
if (_SrcSys == null || _CustId == null)
{
return NotFound();
}
var customer = await _context.Customers.SingleOrDefaultAsync(Cust => Cust.SrcSys == _SrcSys && Cust.CustId == _CustId);
if (customer == null)
{
return NotFound();
}
return View(customer);
}
delete.cshtml的相关代码是:
@model RiskDotNet.Models.Customer
@{
ViewData["Title"] = "Delete";
}
@*<h2>Delete</h2>*@
<br />
<hr />
<dl class="dl-horizontal">
<dt>
Src Sys
</dt>
<dd>
@Html.DisplayFor(model => model.SrcSys)
</dd>
<dt>
Cust ID
</dt>
<dd>
@Html.DisplayFor(model => model.CustId)
</dd>
<dt>
Customer
</dt>
<dd>
@Html.DisplayFor(model => model.CustNm)
</dd>
</dl>
<form asp-action="Delete">
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" />
<p />
<p />
<input type="submit" value="Cancel" class="btn btn-default" a asp-action="Index">
</div>
</form>
所有三个字段都出现在页面上。
关于httppost,什么是合理的代码?
您需要将SRCSYS和CUSTID放在表格中,以便可以将其传递给提交的后端。
您可以将其放在形式的一部分中:
@Html.HiddenFor(model => model.SrcSys)
@Html.HiddenFor(model => model.CustId)
这些属性不会显示,但会提交。
sidenote
不要使用html帮助者( @html.displayfor, @html.hiddenfor ..(它们是旧的做事方式。使用MVC核心带来的标签助手:
https://learn.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro
我自己解决了问题:更新的httppost:
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<ActionResult> DeletePost(Customer customer)
{
try
{
_context.Entry(customer).State = EntityState.Deleted;
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
catch (DbUpdateConcurrencyException)
{
return RedirectToAction("Delete", new { ss = customer.SrcSys, ci = customer.CustId });
}
}
和更新的delete.cshtml:
@model RiskDotNet.Models.Customer
@{
ViewData["Title"] = "Delete";
}
<hr />
<dl class="dl-horizontal">
<dt>
Src Sys
</dt>
<dd>
@Html.DisplayFor(model => model.SrcSys)
</dd>
<dt>
Cust ID
</dt>
<dd>
@Html.DisplayFor(model => model.CustId)
</dd>
<dt>
Customer
</dt>
<dd>
@Html.DisplayFor(model => model.CustNm)
</dd>
</dl>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.HiddenFor(model => model.SrcSys)
@Html.HiddenFor(model => model.CustId)
<form asp-action="Delete">
<div class="form-actions no-color">
<input type="submit" value="Delete" class="btn btn-default" />
<p />
<p />
<input type="submit" value="Cancel" class="btn btn-default" a asp-action="Index">
</div>
</form>
}
做了这份工作!!!: - (