我有一个显示个人信息的剃刀视图,它的路由是 https://localhost:PORT/Pesron/Details/E-12345
。
我想使用另一个控制器为上述人员创建个人资料,相应的链接为 https://localhost:PORT/Profile/Create/E-12345
。
页面会正常打开,但我想将值 E-123456
(该人的 ID 显然会从一个更改为另一个)放入 Create
中的(已禁用)输入框中,所以当我填写其他信息并按提交,创建了一个新的配置文件,我使用 MVC 控制器进行操作,但也不介意使用 Web API。
我如何在 Create
的 Person
视图中打开 Details
。
<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();
}
可能是因为我发送的值不是主键,我将其隐藏并自动递增。
答案 0 :(得分:1)
您可以使用 ViewData
。下面是一个示例。
查看:
<a asp-action="Create" asp-controller="Profile" asp-route-id="@Model.ID">Create</a>
创建动作:
public IActionResult Create(string id)
{
ViewData["ID"] = id;
return View();
}
创建视图:
<input value="@ViewBag.ID" disabled="disabled"/>
发布创建方法:
[HttpPost]
public IActionResult Create(Profile profile, string id)
{
//.....
return RedirectToAction("actionname","Controllername");
}