我想测试[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方法可以正常工作,那么可能是什么问题。
答案 0 :(得分:0)
您确定某处有Create.cshtml
视图吗?由于Compare
属性可能因某种原因导致模型无效,并且只有在模型无效时才会调用“创建”视图。
如果你输入或不输入Description
和SequenceOrder
,你会得到相同的结果吗?
你可以尝试:
[Required(ErrorMessage = "D Description Field is required..")]
[Compare("Question_Validation.SequenceOrder")]
public string Description { get; set; }