мой список переменных массива отсутствует после нажатия кнопки - PullRequest
0 голосов
/ 01 мая 2018

У меня нет БД, вместо БД у меня есть список массивов, у меня есть таблица, и когда я хочу Редактировать детали драйвера, я нажимаю «редактировать», после этого отображения меняюсь на страницу с деталями, после этого я могу изменить детали и нажать кнопку «Сохранить», моя проблема в том, что после нажатия кнопки «Сохранить» мой список массивов пропал, я не очень хорош в MVC, но я стараюсь изо всех сил! если кто-то видит, что я делаю неправильно, пожалуйста, скажите мне и объясните, спасибо

что мой контроллер

public class DriverTaxiController : Controller
{

    static  List<Drivers> Driver = new List<Drivers>();
    public static  int numLine = -1;

    // GET: DriverTaxi
    public ActionResult List()
    {

        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)
    {
       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;
                ViewBag.line = Driver[i].Line;
            }
        }

     numLine = id;

    return View();
}

[HttpPost]
public ActionResult Update()
{

    if (ModelState.IsValid)
    {
        numLine--;
        Driver[numLine].NumberLicens = Request.Form["NumberLicens"];
        Driver[numLine].FirstName = Request.Form["FirstName"];
        Driver[numLine].LastName = Request.Form["LastName"];
        Driver[numLine].PhoneNumber = Request.Form["PhoneNumber"];
        Driver[numLine].StartWork = Request.Form["StartWork"];
        Driver[numLine].DateCheckEyes = Request.Form["DateCheckEyes"];

        return View("List2");
    }
    else
    {
        return View("MyAction");
    }

}

что мой View Edit, когда я нажимаю кнопку, мои параметры не сохраняются в моем списке, я не понимаю, почему

     @using (Html.BeginForm("Update", "DriverTaxi"))
     {
        @Html.TextBoxFor(Model => Model.NumberLicens, new { @Value = @ViewBag.nl }) @Html.ValidationMessageFor(x => x.NumberLicens)
        <br />
        @Html.TextBoxFor(Model => Model.FirstName, new { @Value = @ViewBag.fn })
        <br />
        @Html.TextBoxFor(Model => Model.LastName, new { @Value = @ViewBag.ln })
        <br />
        @Html.TextBoxFor(Model => Model.PhoneNumber, new { @Value = @ViewBag.phone })
        <br />
        @Html.TextBoxFor(Model => Model.StartWork, new { @Value = @ViewBag.start })
        <br />
        @Html.TextBoxFor(Model => Model.DateCheckEyes, new { @Value = @ViewBag.eye })
        <br />

        @Html.HiddenFor(Model => Model.Line)

        <input type="submit" value="Save" />
        @Html.ValidationSummary()
    }

, что мой стол

    <table class="table table-bordered table-responsive table-hover">
        <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>Address</th>
            <th>Email</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>



            <td>
                @Html.ActionLink("Edit", "MyAction", "DriverTaxi", new { id = p.Line }, null)
            </td>
            <td>addres</td>
            <td>email</td>
            <td><input id="Button2" type="submit" value="Delete" name="@p.NumberLicens" /></td>
        </tr>

    }`enter code here`

и это моя ошибка введите описание изображения здесь

1 Ответ

0 голосов
/ 02 мая 2018

Просто добавьте свое назначение ViewBag для каждого из ваших действий, которые отображают представление. Примерно так:

public ActionResult MyAction(int  id=0)
{
   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;
            ViewBag.line = Driver[i].Line;
        }
    }

    numLine = id;
    ViewBag.Drivers = Driver; //TODO
    return View();
}

[HttpPost]
public ActionResult Update()
{

    if (ModelState.IsValid)
    {
        numLine--;
        Driver[numLine].NumberLicens = Request.Form["NumberLicens"];
        Driver[numLine].FirstName = Request.Form["FirstName"];
        Driver[numLine].LastName = Request.Form["LastName"];
        Driver[numLine].PhoneNumber = Request.Form["PhoneNumber"];
        Driver[numLine].StartWork = Request.Form["StartWork"];
        Driver[numLine].DateCheckEyes = Request.Form["DateCheckEyes"];

        ViewBag.Drivers = Driver; //TODO

        return View("List2");
    }
    else
    {
        ViewBag.Drivers = Driver; //TODO

        return View("MyAction");
    }

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