操作获取错误的 Id
Action gets the wrong Id
我有日志消息。如果我想去详细信息页面。 Id returns 始终为值“1”。
我做错了什么?
html 页(查看)。
@model List<LogBerichtModel>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link href="css/styles.css" rel="stylesheet" />
</head>
<body>
@using (Html.BeginForm("DetailInfo", "Home", FormMethod.Post))
{
<div class="container">
<div><h4>Logberichten</h4></div>
<div class="row logs" id="app">
<div class="mt-5 d-flex align-content-xl-stretch flex-column p-5">
<table class="table table-striped m-2">
<thead>
<tr class="bg-primary-custom">
<th>@Html.DisplayNameFor(Model => Model[0].Bericht)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Datum)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Systeem)</th>
<td>@Html.DisplayNameFor(Model => Model[0].Klasse)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Methode)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Systeemmelding):</td>
<td></td>
</tr>
</thead>
@for (var item = 0; item < Model.Count; item++)
{
<tbody>
<tr style='background-color:@(item%2 == 0 ? "#FEF2F4":"#FEE2CA" );'>
<td>@Html.DisplayFor(Model => Model[item].Bericht)</td>
<td>@Html.DisplayFor(Model => Model[item].Datum)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeem)</td>
<td>@Html.DisplayFor(Model => Model[item].Klasse)</td>
<td>@Html.DisplayFor(Model => Model[item].Methode)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeemmelding)</td>
<td>
<input id="id" name="id" type="hidden" value="@Model[item].Id" />
<input class="bg-primary-custom" type="submit" value="Submit" title="DetailInfo" />
</td>
</tr>
</tbody>
}
</table>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
}
</body>
在控制器中(id始终为1)
[HttpPost]
public IActionResult DetailInfo(int id)
//public IActionResult DetailInfo(LogBerichtModel logbericht)
{
你的循环在表单中,你的提交动作是针对整个表单的提交。
您的表单包含所有 ID,因此当您提交时,您提交了一组 ID。
我建议你使用@Html.ActionLink
。
像下面这样改变你的View
。
@model List<LogBerichtModel>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link href="css/styles.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div><h4>Logberichten</h4></div>
<div class="row logs" id="app">
<div class="mt-5 d-flex align-content-xl-stretch flex-column p-5">
<table class="table table-striped m-2">
<thead>
<tr class="bg-primary-custom">
<th>@Html.DisplayNameFor(Model => Model[0].Bericht)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Datum)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Systeem)</th>
<td>@Html.DisplayNameFor(Model => Model[0].Klasse)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Methode)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Systeemmelding):</td>
<td></td>
</tr>
</thead>
@for (var item = 0; item < Model.Count; item++)
{
<tbody>
<tr style='background-color:@(item%2 == 0 ? "#FEF2F4":"#FEE2CA" );'>
<td>@Html.DisplayFor(Model => Model[item].Bericht)</td>
<td>@Html.DisplayFor(Model => Model[item].Datum)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeem)</td>
<td>@Html.DisplayFor(Model => Model[item].Klasse)</td>
<td>@Html.DisplayFor(Model => Model[item].Methode)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeemmelding)</td>
<td>
@Html.ActionLink("DetailInfo", "DetailInfo", "Home", new { id = @Model[item].Id }, null)
</td>
</tr>
</tbody>
}
</table>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</body>
并将您的方法更改为 get
。
[HttpGet]
public IActionResult DetailInfo(int id)
{
}
测试结果:
我有日志消息。如果我想去详细信息页面。 Id returns 始终为值“1”。
我做错了什么?
html 页(查看)。
@model List<LogBerichtModel>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link href="css/styles.css" rel="stylesheet" />
</head>
<body>
@using (Html.BeginForm("DetailInfo", "Home", FormMethod.Post))
{
<div class="container">
<div><h4>Logberichten</h4></div>
<div class="row logs" id="app">
<div class="mt-5 d-flex align-content-xl-stretch flex-column p-5">
<table class="table table-striped m-2">
<thead>
<tr class="bg-primary-custom">
<th>@Html.DisplayNameFor(Model => Model[0].Bericht)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Datum)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Systeem)</th>
<td>@Html.DisplayNameFor(Model => Model[0].Klasse)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Methode)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Systeemmelding):</td>
<td></td>
</tr>
</thead>
@for (var item = 0; item < Model.Count; item++)
{
<tbody>
<tr style='background-color:@(item%2 == 0 ? "#FEF2F4":"#FEE2CA" );'>
<td>@Html.DisplayFor(Model => Model[item].Bericht)</td>
<td>@Html.DisplayFor(Model => Model[item].Datum)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeem)</td>
<td>@Html.DisplayFor(Model => Model[item].Klasse)</td>
<td>@Html.DisplayFor(Model => Model[item].Methode)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeemmelding)</td>
<td>
<input id="id" name="id" type="hidden" value="@Model[item].Id" />
<input class="bg-primary-custom" type="submit" value="Submit" title="DetailInfo" />
</td>
</tr>
</tbody>
}
</table>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
}
</body>
在控制器中(id始终为1)
[HttpPost]
public IActionResult DetailInfo(int id)
//public IActionResult DetailInfo(LogBerichtModel logbericht)
{
你的循环在表单中,你的提交动作是针对整个表单的提交。
您的表单包含所有 ID,因此当您提交时,您提交了一组 ID。
我建议你使用@Html.ActionLink
。
像下面这样改变你的View
。
@model List<LogBerichtModel>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link href="css/styles.css" rel="stylesheet" />
</head>
<body>
<div class="container">
<div><h4>Logberichten</h4></div>
<div class="row logs" id="app">
<div class="mt-5 d-flex align-content-xl-stretch flex-column p-5">
<table class="table table-striped m-2">
<thead>
<tr class="bg-primary-custom">
<th>@Html.DisplayNameFor(Model => Model[0].Bericht)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Datum)</th>
<th>@Html.DisplayNameFor(Model => Model[0].Systeem)</th>
<td>@Html.DisplayNameFor(Model => Model[0].Klasse)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Methode)</td>
<td>@Html.DisplayNameFor(Model => Model[0].Systeemmelding):</td>
<td></td>
</tr>
</thead>
@for (var item = 0; item < Model.Count; item++)
{
<tbody>
<tr style='background-color:@(item%2 == 0 ? "#FEF2F4":"#FEE2CA" );'>
<td>@Html.DisplayFor(Model => Model[item].Bericht)</td>
<td>@Html.DisplayFor(Model => Model[item].Datum)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeem)</td>
<td>@Html.DisplayFor(Model => Model[item].Klasse)</td>
<td>@Html.DisplayFor(Model => Model[item].Methode)</td>
<td>@Html.DisplayFor(Model => Model[item].Systeemmelding)</td>
<td>
@Html.ActionLink("DetailInfo", "DetailInfo", "Home", new { id = @Model[item].Id }, null)
</td>
</tr>
</tbody>
}
</table>
</div>
</div>
</div>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
</body>
并将您的方法更改为 get
。
[HttpGet]
public IActionResult DetailInfo(int id)
{
}
测试结果: