Как получить переменную из вида в контроллер? - PullRequest
0 голосов
/ 30 апреля 2018

Мне нужно получить переменную от кнопки до контроллера. У меня есть кнопка «Редактировать», и когда я нажимаю ее, я хочу отправить номер строки контроллеру, чтобы узнать, какой драйвер нуждается в редактировании.

Это мой контроллер:

 static  List<Drivers> Driver = new List<Drivers>();

    // GET: DriverTaxi
    public ActionResult List()
    {

        if (Driver.Count == 0)
        {
            Driver.Add(new Drivers() { Line = 1, NumberLicens = "123456", FirstName = "Evgeny", LastName = "Ryvkin", PhoneNumber = "0546819725", StartWork = "12/10/17", DateCheckEyes = "13/10/17" });
            Driver.Add(new Drivers() { Line = 2, NumberLicens = "123457", FirstName = "Moshe", LastName = "Kohen", PhoneNumber = "0546819725", StartWork = "12/10/17", DateCheckEyes = "13/10/17" });
            Driver.Add(new Drivers() { Line = 3, NumberLicens = "123458", FirstName = "Dana", LastName = "Multy", PhoneNumber = "0546819725", StartWork = "12/10/17", DateCheckEyes = "13/10/17" });
        }

        ViewBag.Drivers = Driver;
        return View();
    }


    public ActionResult MyAction(int  id=0)
    {


       // int numberLine = Convert.ToInt32(lineDriver);//convert string to int
       for(int i = 0; i < Driver.Count; i++)
        {
            if(Driver[i].Line == id)
            {
                ViewBag.nl = Driver[i].NumberLicens;
                ViewBag.fn = Driver[i].FirstName;
                ViewBag.ln = Driver[i].LastName;
                ViewBag.phone = Driver[i].PhoneNumber;
                ViewBag.start = Driver[i].StartWork;
                ViewBag.eye = Driver[i].DateCheckEyes;
            }
        }

        return View();
    }

Таблица отправляет переменную, но я не могу получить вход в контроллер; Я не понимаю, почему.

Это мой взгляд:

        <tr>
            <th>No.</th>
            <th>Number Licens</th>
            <th>Full Name</th>
            <th>Phone Number</th>
            <th>Start Work</th>
            <th>Date Cheking the Eyes</th>
            <th>Edit</th>
            <th>Delete</th>
        </tr>

        @foreach (Drivers p in ViewBag.Drivers)
    {
        <tr>
            <td>@p.Line</td>
            <td>@p.NumberLicens</td>
            <td>@p.FirstName &nbsp; @p.LastName </td>
            <td>@p.PhoneNumber</td>
            <td>@p.StartWork</td>
            <td>@p.DateCheckEyes</td>

            @using (Html.BeginForm("MyAction", "DriverTaxi"))
            {
            <td>
                <input type="hidden" name="DriverName" value="hello" />
                <input type="submit" name="123" value="Edit" />
                @Html.ActionLink("MyAction", "DriverTaxi", new { id = p.Line })
            </td>
            }
   }

Спасибо!

1 Ответ

0 голосов
/ 30 апреля 2018

Эта ссылка предоставит необходимую вам информацию.

[РЕДАКТИРОВАТЬ: Не видел код вида.]
Не просматривайте свой список таким образом. Если у вас есть индекс искомого элемента, вы можете использовать Driver.ElementAt (i). Это вернет значение по указанному индексу.
Кроме того, возможно, это не плохая идея использовать модель в вашем представлении. Это уменьшит потребность во всех тех пакетах просмотра, которые у вас есть.

@model List<Drivers>

при вызове вашего представления вы можете указать свой список в качестве аргумента, тогда

return View(Driver);

и затем, когда вы перебираете свои драйверы, вы можете просто сделать:

foreach (var item in Model)
{
   <td>@item.Line</td>
   <td>@item.NumberLicens</td>
   // ...
}

Что касается вашего ActionLink, то синтаксис следующий:

Html.ActionLink(article.Title, 
                "Item",   // <-- ActionMethod
                "Login",  // <-- Controller Name.
                new { article.ArticleID }, // <-- Route arguments.
                null  // <-- htmlArguments .. which are none. You need this value
                      //     otherwise you call the WRONG method ...
                      //     (refer to comments, below).
                )

Что означало бы, что ваш MyAction находится в том месте, где находится напечатанное значение, а не там, где находится ваш метод действия, может быть, это сработает:

 @Html.ActionLink("Edit","MyAction", "DriverTaxi", new { id = p.Line },null)

Я вообще не эксперт, поэтому, если моя информация неверна, не стесняйтесь исправлять это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...