Использование modelstate.isvalid для проверки данных внутри контроллера в MVC3 - PullRequest
1 голос
/ 24 февраля 2012

Я довольно новичок в ASP.NET MVC3, но у меня около 4 лет опыта работы с PHP-фреймворками.

Я пытаюсь создать веб-приложение MVC3, но у меня возникают проблемы с проверкой моей модели. Вот тестовый контроллер, чтобы показать вам, что я безуспешно пытаюсь сделать.

Я пытаюсь передать значение моей модели внутри контроллера, но оно не учитывает параметр.

Я попытался использовать modelstate.setmodelvalue для junk.sentence, но он сохраняет значение из запроса POST, которое недопустимо, и которое я хочу изменить по умолчанию (для целей тестирования) в контроллере.

Может кто-нибудь помочь?

Заранее спасибо.

Michael

    [HttpPost]
    public ActionResult Create(Junk junk)
    {
        //ModelState.Clear();
        junk.sentence = "coucou";

        ModelState.SetModelValue("sentence", new ValueProviderResult(junk.sentence, junk.number, null));


        //ModelState
        if (ModelState.IsValid)
        {
            db.Junks.Add(junk);
            db.SaveChanges();
            return RedirectToAction("Index");  
        }

        return View(junk);
    }

    //
    // GET: /Junk/Edit/5

    public ActionResult Edit(int id)
    {
        Junk junk = db.Junks.Find(id);
        return View(junk);
    }

Ответы [ 2 ]

1 голос
/ 24 февраля 2012

Попробуйте удалить его из состояния модели:

[HttpPost]
public ActionResult Create(Junk junk)
{
    junk.sentence = "coucou";

    //ModelState
    if (ModelState.IsValid)
    {
        db.Junks.Add(junk);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }

    ModelState.Remove("sentence");
    return View(junk);
}

Это предполагает, что, по вашему мнению, у вас есть соответствующее поле ввода, которое было сгенерировано с помощью некоторых помощников HTML, таких как EditorFor, например:

@Html.EditorFor(x => x.sentence)

или:

@Html.TextBoxFor(x => x.sentence)
0 голосов
/ 24 февраля 2012

ModelState.IsValid возвращает false, если в состояние модели добавлены ошибки модели. MVC проверяет свойства вашей модели и создает для вас список ошибок в ModelState. Вы должны удалить ошибки из состояния модели, которые вы хотите игнорировать изнутри действия вашего контроллера. Затем вы можете обновить фактические значения в модели. (Дарин Димитров показывает вам пример этого)

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