У меня есть представление, которое мне нужно, чтобы принять пользовательский ввод и отправить его в действие контроллера. Я пробовал несколько вещей, но какие ссылки я нашел в Интернете, похоже, не работает для меня. У меня есть входные данные в форме, и у меня есть имя контроллера и действия, но оно, похоже, не передает значение из пользовательского ввода. На самом деле, если я жестко не закодировал значение в параметрах контроллеров, когда я попадаю на страницу, я просто получаю сообщение об ошибке:
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult Index(Int32)' in 'Namespace.Controllers.TerminalReceiptsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Имя параметра: параметры
В противном случае, когда жестко запрограммирован в параметрах контроллера, он работает просто отлично.
Ниже приведен код.
Просмотр части импорта:
@using (Html.BeginForm("Index", "TerminalReceipts"))
{
<div>
<input type="text" name="ID" />
<input type="submit" value="Find Receipts">
</div>
string Id = Request.Form["ID"];
}
Просмотр порции таблицы:
<div class="row">
<div class="col-md-12" style="overflow-y:scroll">
<table class="table table-striped table-hover table-bordered" id="terminalReceipts">
<thead>
<tr>
<th>Local Transaction Time</th>
<th>Amount</th>
<th>Receipt</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model.TransactionsTests)
{
<tr>
<td>@item.TransactionTime</td>
@*<td>@Html.DisplayFor(modelItem => item.LocalTransactionTime)</td>*@
<td>@item.Amount</td>
<td>@Html.ActionLink("View Receipt", "Details", new { Key = 1 }, new { @class = "btn btn-primary btn-sm" }) <br /></td>
</tr>
}
</tbody>
</table>
</div>
Действие контроллера:
// GET: TerminalReceipts
public ActionResult Index(int id )
{
var model = TRBL.GetTransactionTestsData(id);
//var model = new TerminalReceiptsVM();
return View(model);
}
Где в моем коде (особенно в части импорта представлений) я ошибаюсь?