比较验证器:阻止我的操作方法在asp.net mvc3中呈现所需的视图

时间:2012-02-15 01:08:29

标签: asp.net-mvc-3 compare data-annotations

我想测试[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")],那么action方法可以正常工作,那么可能是什么问题。

1 个答案:

答案 0 :(得分:0)

您确定某处有Create.cshtml视图吗?由于Compare属性可能因某种原因导致模型无效,并且只有在模型无效时才会调用“创建”视图。

如果你输入或不输入DescriptionSequenceOrder,你会得到相同的结果吗?

你可以尝试:

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