Сравните валидаторы: не позволяет моему методу действия отобразить требуемое представление в asp.net mvc3 - PullRequest
0 голосов
/ 15 февраля 2012

Я хочу проверить, как работают [compare] валидаторы, поэтому я добавил его в свой класс валидации следующим образом: -

public class Question_Validation
{
   [Required(ErrorMessage = "D Description Field is required..")]
   **[Compare("SequenceOrder")]**
    public string Description { get; set; }

    [Required(ErrorMessage = "S Sequence order Field is required..")]
    public string SequenceOrder { get; set; }} 

И у меня есть следующий метод после действия: -

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create(int assessmentid, Question q)
    {
        if (ModelState.IsValid)
        { 
            q.CreatedBy = User.Identity.Name;
            Questions_Assessments qa = new Questions_Assessments();
            qa.AssessmentID = assessmentid;
            q.Questions_Assessments.Add(qa);
            elearningrepository.AddQuestion(q);
            elearningrepository.Save();
            return RedirectToAction("Details", "Assessments", 
                                    new  { id = assessmentid });
        }
        return View(q); 
    }

Но когда я пытаюсь создать новый вопрос, возвращается следующая ошибка: -

Представление «Создать» или его мастер не найдены, или никакой движок представления не поддерживает искомые местоположения. Были найдены следующие местоположения: .......

Но если я удалю [Compare("SequenceOrder")] из класса проверки, тогда метод действия будет работать без проблем, так в чем может быть проблема?

1 Ответ

0 голосов
/ 15 февраля 2012

Вы уверены, что где-то есть Create.cshtml вид? Поскольку атрибут Compare может по какой-то причине просто сделать вашу модель недействительной, и только если ваша модель недопустима , вызывается представление Create.

У вас есть тот же результат, если вы вводите или не вводите Description и SequenceOrder то же самое?

Вы можете попробовать:

[Required(ErrorMessage = "D Description Field is required..")]
[Compare("Question_Validation.SequenceOrder")]
public string Description { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...