ASP.NET MVC Проверка на стороне сервера с динамически добавляемым вводом - PullRequest
0 голосов
/ 10 декабря 2018

Я сейчас строю проект ASP.NET MVC и столкнулся с некоторой проблемой.У меня есть форма, которая состоит из простого ввода и ввода сетки, который выглядит следующим образом

Invoice Code: XXX 
Customer: XXX 
Email: XXX

Item Code | Quantity | Price | 
XXX       | XXX      | XXX   |

Строка элемента списка динамически добавляется с использованием jquery и частичного представления.

Теперь, когда я хочучтобы предоставить стороне сервера проверку формы, я прочитал руководство, в котором мне нужно добавить ошибку состояния модели в действии [HttpPost], а затем вернуть отправленную модель вместе с ошибкой обратно в представление, например:

[HttpPost]
    public ActionResult New(Invoice InvoiceVM)
    {
        if (!ModelState.IsValid)
        {
            ModelState.AddModelError("INV_QUAN", "QUANTITY INVALID!");
            return View(InvoiceVM);
        }
        var INV_ID = SaveInvoice.NewInvoice(InvoiceVM);
        return RedirectToAction("Index");
    }

Но когда проверка запускается неверным вводом и он пытается вернуться к представлению вместе с ошибкой, представление, очевидно, обновляется до формы, в которой нет строки списка, потому что элемент строки списка добавляется динамически.

Может кто-нибудь помочь мне с этой проблемой, как мне вернуться к представлению, где в форме уже есть вставленная позиция.Или есть какое-то решение относительно моей проблемы?спасибо.

Ps: простите за плохой английский

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы должны изменить свою модель и сохранить в ней все необходимые данные.

 public class SomeModel {
public Invoice InvoiceVM {get; set;}
public IList<SomeType> SomeData {get; set;}
}

Заполните модель, прежде чем отправить ее на просмотр:

    public ActionResult New(Invoice InvoiceVM)
    {
if (!ModelState.IsValid)
        { var model = new SomeModel {InvoiceVM =InvoiceVM;
           SomeData = _someService.GetData()};
            ModelState.AddModelError("INV_QUAN", "QUANTITY INVALID!");
            return View(model);
        }
0 голосов
/ 10 декабря 2018

Вы можете отправить свою форму с помощью ajax, затем вернуть URL-адрес перенаправления или ошибки и добавить его для динамической формы следующим образом:

Возвращение Partialview & JSON из контроллера MVC 5

MVC Возвращает частичное представление как JSON

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