我要切入追逐。 我创建了一个Survey平台,它有3个模型。
模型调查,它有许多SurveyQuestion,其中有许多SurveyAnswer。 (我可以插入这些模型的所有值,但我认为不需要)
public class SurveyAnswer
{
[Key]
public int Id { get; set; }
public string Value { get; set; }
public string SubmittedBy { get; set; }
public int SurveyId { get; set; }
public int QuestionId { get; set; }
public virtual Survey Survey { get; set; }
public virtual SurveyQuestion Question { get; set; }
public string Comment { get; set; }
}
现在我遇到的一个问题是,一旦有人创建了调查而另一个人正在启动调查,他就会回答这个问题。下次他进入索引页面时如何显示?如何显示"您已经提交了此调查"?我是在Controller中还是在View中执行此操作?我现在更喜欢这个行动(它是所有正在进行的调查的菜单)。
[HttpGet]
public ActionResult Menu()
{
var survey = Mapper.Map<IEnumerable<Survey>, IEnumerable<SurveyViewModel>>(_unitOfWork.SurveyRepository.Get());
return View(survey.ToList());
}
答案 0 :(得分:1)
将所有验证规则放入AbstractValidator类。
var request = require('request');
request('http://localhost:3000/api/jobs/asd', function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Print the google web page.
}
}
如果要在ViewModel中检查唯一性,可以使用Remote。
[Validator(typeof(SurveyAnswerValidator))]
public class SurveyAnswer{
[Key]
public int Id { get; set; }
public string Value { get; set; }
public string SubmittedBy { get; set; }
public int SurveyId { get; set; }
public int QuestionId { get; set; }
public virtual Survey Survey { get; set; }
public virtual SurveyQuestion Question { get; set; }
public string Comment { get; set; }
}
public class SurveyAnswerValidator : AbstractValidator<SurveyAnswer>
{
public SurveyAnswerValidator()
{
//list your rules
RuleFor(x => x.SubmittedBy).Must(BeUnique).WithMessage("Already
submitted this survey");
}
private bool BeUnique(string submittedBy)
{
if(_context.SurveyAnswers.
FirstOrDefault(x => x.SubmittedBy == submittedBy) == null){
return true;
}
else{
return false;
}
}
}
其中HasSubmitted是一种方法,您可以在控制器中创建该方法,以便在用户提交时返回true。 RemoteAttribute https://msdn.microsoft.com/en-us/library/gg508808(VS.98).aspx
答案 1 :(得分:0)
vahdet的最佳解决方案(在评论中提出)
[Index("IX_AnswerQuestion", 2, IsUnique = true)]
[StringLength(36)]
public string SubmittedBy { get; set; }
public int SurveyId { get; set; }
[Index("IX_AnswerQuestion", 1, IsUnique = true)]
public int QuestionId { get; set; }