【发布时间】:2021-05-10 05:46:09
【问题描述】:
我有一个显示一个人信息的剃刀视图,它的路线是https://localhost:PORT/Pesron/Details/E-12345。
我想使用另一个控制器为该人创建个人资料,对应的链接是https://localhost:PORT/Profile/Create/E-12345。
该页面将正常打开,但我想将值E-123456 这是人的 ID 并且显然从一个到另一个更改到 Create 的(禁用)输入框中,所以当我填写其他信息时然后按提交,创建一个新的配置文件,我正在使用 MVC 控制器进行操作,但也不介意使用 Web API。
我如何在Person 的Details 视图中打开Create。
<a asp-action="Create" asp-controller="Profile" asp-route-id="@Model.ID">Create</a>
我的 2 个Create 操作方法。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(string MRN, [Bind("Id,Dep_Id,Check_In,Check_Out")] Profile profile)
{
ViewData["ID"] = MRN;
if (ModelState.IsValid)
{
_context.Add(profile);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
return View(profile);
}
public IActionResult Create(string MRN)
{
ViewData["ID"] = MRN;
return View();
}
可能是因为我发送的值不是主键,我将其隐藏并自动递增。
【问题讨论】:
-
你好,关于这个案例的任何更新?如果它不起作用,你可以提供你的代码。
-
你应该使用
asp-route-MRN="@Model.ID"。将您的代码更改为<a asp-action="Create" asp-controller="Profile" asp-route-MRN="@Model.ID">Create</a> -
把MRN放在
Bind()里面有关系吗? -
你不需要把MRN放在Bind()中。你可以试试。
-
删除 Bind() 正在解决问题
标签: controller asp.net-core-mvc asp.net-mvc-routing