我遇到自动增量主键问题..
当我将学生添加到我的数据库时,我可以一遍又一遍地添加同一个学生,因为学生的主键是自动增量的,所以它当然不会重复,我需要验证SSN的插入之前,学生尚未存在于数据库中。
我怎么能在mvc3上做到这一点? (我在.net和mvc3中全新)
我在学生控制器中创建的代码是:
[HttpPost]
public ActionResult Create(Alumno alumno)
{
try
{
using (var db = new administracionEntities())
{
db.Alumno.Add(alumno);
db.SaveChanges();
}
return RedirectToAction("Index");
}
catch
{
return View();
}
}
答案 0 :(得分:1)
在插入之前检查输入alumno.ssn是否不存在,如
db.Alumno.where(a=> a.ssn == alumno.ssn).Any()
如果返回true,则数据库中存在ssn。
在MVC中有不同的方法可以实现这一点。在其中一种方法中,您可以在单独调用控制器而不是在Create Action中调用此调用。也许你可以通过客户端的SSN文本框模糊事件上的JQuery.Ajax调用来检查是否存在重复的SSN。
$.ajax({
type: "Get",
url: "StudentController/DoesSSNExist",
data: "ssn=#",
success: function(msg){
if(msg)
alert('ssn already exists');
}
这是控制器动作
public bool DoesSSNExist(string ssn)
{
return db.Alumno.where(a=> a.ssn == ssn).Any()
}
答案 1 :(得分:0)
在我的模型课程中
public class Student {
public int StudentID { get; set; }
[Remote("UsernameChecker", "Student")]
public string Username { get; set; }
}
在我的控制器中
public virtual JsonResult UsernameChecker(string Username){
bool checkuser = db.Student.Any(i => i.Username == Username);
return checkuser
? Json("Username already exists", JsonRequestBehavior.AllowGet)
: Json(true, JsonRequestBehavior.AllowGet);
}