Meiyarasan K Ответов: 2

Привязка модели не работает, когда я ввожу значения в представление текстового поля , она не назначается параметру метода действия в контроллере.


Страница Index.cshtml имеет текстовое поле и кнопку поиска , когда мы нажимаем кнопку поиска , значение текстового поля должно быть присвоено параметру метода действия, метод действия searchById находится в домашнем контроллере,

Я получаю ниже ошибки ,

The parameters dictionary contains a null entry for parameter 'Id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult SearchById(Int32)' in 'ModelBinding.Controllers.HomeController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
Parameter name: parameters


Что я уже пробовал:

Индекс.страница cshtml по

@model IEnumerable< ModelBinding.Models.Employee>
           

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    @using (Html.BeginForm("SearchById","Home"))
    {
        <p>
            <label>Enter ID:<input type="number" id="Id" /></label>
        </p>
        <button>Search</button>
    }


Метод домашнего контроллера SearchbyId с целочисленным параметром:

public ActionResult SearchById(int Id)
       {
           return View("Index", empList.Where(x => x.Id == Id));
       }

2 Ответов

Рейтинг:
7

Richard Deeming

Элементы управления HTML-формами отправляют свое значение на сервер только в том случае, если они имеют name атрибут. Ваш <input> только id атрибут, поэтому значение не будет отправлено.

<label>Enter ID: <input type="number" id="Id" name="Id" /></label>

Входной тег HTML[^]


Рейтинг:
0

Rahul Newara

Здравствуйте Meiyarasan,

Внесите изменения в свой вид:

заменять
@model IEnumerable< ModelBinding.Модели.Сотрудник>
к
@model ModelBinding.Модели.Работник

и

к
@HTML-код.textboxfor(м=&ГТ;м. Удостоверение личности,новый(идентификатор="код"))