我有2个表,Stack和User,以及它的多对一表。
[HasUniqueDomainSignature(ErrorMessage = "This stack already exists")]
public class Stack : Entity
{
[DomainSignature]
public virtual string Title { get; set; }
public virtual User PostBy { get; set; }
}
[HasUniqueDomainSignature(ErrorMessage="This email address already exists")]
public class User : Entity
{
[DomainSignature]
public virtual string Email { get; set; }
public User()
{
this.Stacks = new List<Stack>();
}
}
这是添加堆栈的代码。如果我添加一个具有唯一标题的堆栈,一切正常,没问题。我在数据库中添加了一个标题已存在的新堆栈,验证失败,我检查了ModelState,因为User而不是Stack对象检查了validaiton faild。我收到“此电子邮件地址已存在”,我没有添加新用户,只是将用户分配给堆栈。我应该得到“这个堆栈已经存在”
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Add(Stack stack)
{
if (ModelState.IsValid)
{
var user = _userRepository.GetAll().Where(u => u.Email == HttpContext.User.Identity.Name).SingleOrDefault();
if (user == null)
throw new ArgumentNullException("User cannot be found, please re-login.");
stack.PostDate = DateTime.Now;
stack.PostBy = user;
ActionConfirmation<Stack> confirmation = _stackCudTasks.SaveOrUpdate(stack);
if (confirmation.WasSuccessful)
{
TempData["message"] = confirmation.Message;
return RedirectToAction("Index");
}
ViewBag["message"] = confirmation.Message;
}
return View(_stackCudTasks.CreateEditViewModel(stack));
}
答案 0 :(得分:0)
以下是引起我注意的一些事情:
在相关说明中,http://groups.google.com/group/sharp-lite有一个针对S#arp Lite的新Google论坛讨论组