public IActionResult Edit(Note model) { var noteNo = model.NoteNo; if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { return(RedirectToAction("Login", "Account")); } else { if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { var note = db.Notes.FirstOrDefault(n => n.NoteNo.Equals(noteNo)); if (note != null) { note.NoteTitle = model.NoteTitle; note.NoteContents = model.NoteContents; db.SaveChanges(); return(Redirect("Index")); } } //전형적인 에러메시지 ModelState.AddModelError(string.Empty, "게시물을 저장할 수 없습니다."); } return(View(model)); } }
public IActionResult Add(Note model) { if (HttpContext.Session.GetInt32("LOGIN_KEY") == null) { return(RedirectToAction("Login", "Account")); } model.UserNo = int.Parse(HttpContext.Session.GetInt32("LOGIN_KEY").ToString()); if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { db.Notes.Add(model); if (db.SaveChanges() > 0) { //return RedirectToAction("Index", "Note"); //다른 폴더로 이동할 때 return(Redirect("Index")); // 같은 폴더에서 이동할 때 } ModelState.AddModelError(string.Empty, "게시물을 저장할 수 없습니다."); } } return(View(model)); }
public IActionResult Add(Note model) { if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { // 로그인이 아닌 상태 return(RedirectToAction("Login", "Account")); } model.UserNo = int.Parse(HttpContext.Session.GetInt32("USER_LOGIN_KEY").ToString()); if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { db.Notes.Add(model); if (db.SaveChanges() > 0) { return(Redirect("Index")); } // 동일한 컨트롤러 내에서는 Redirect, 타 컨트롤러에 접근할때는 RedirectToAction("Action", "Controller") } ModelState.AddModelError(string.Empty, "게시물을 저장할 수 없습니다."); } return(View(model)); }
public IActionResult Add(Note model) { if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { //로그인이 안된 상태 return(RedirectToAction("Login", "Account")); } model.UserNo = int.Parse(HttpContext.Session.GetInt32("USER_LOGIN_KEY").ToString()); if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { db.Notes.Add(model); //var result = db.SaveChanges(); // commit if (db.SaveChanges() > 0) { //동일한 위치의 Index로 이동 return(Redirect("Index")); //return RedirectToAction("Index","Home"); } } ModelState.AddModelError(string.Empty, "게시물을 저장할 수 없습니다."); } return(View(model)); }
public IActionResult Login(LoginViewModelClass model) { //Id, Pw -필수 //using 문에 한 줄이라도 줄면 속도가 빨라진다 if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { //Linq - 메서드 체이닝 //=> : A Go to B // == 메모리에 누수가 발생할 수 있다. UserID는 DB에서 받아왔을 거고 ==는 새로운 객체, String을 선언하게 된다. 그래서 일치여부는 // //var user = db.Users.FirstOrDefault(u=>u.UserId == model.UserId && u.UserPassword == model.UserPassword); //equals를 사용해야 메모리누수가 발생하지않는다. var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword)); if (user != null) { //로그인 성공 페이지로 이동 //HttpContext.Session.SetInt32(key, value); //로그인시 등재 로그아웃되면 빠져나감 HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSuccess", "Home")); } } //로그인에 실패했을 때 ModelState.AddModelError(string.Empty, "로그인 정보가 올바르지 않습니다."); } return(View()); }
public IActionResult Login(LoginModelView model) { // ID, 비밀번호 - 필수 if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { // Linq - 메서드 체이닝 // => : A Go to B //var user = db.Users.FirstOrDefault(u => u.UserID == model.UserID && u.UserPassword == model.UserPassword); var user = db.Users.FirstOrDefault(u => u.UserID.Equals(model.UserID) && u.UserPassword.Equals(model.UserPassword)); if (user != null) { // 로그인 성공 //HttpContext.Session.SetInt32(key, value); HttpContext.Session.SetInt32("LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSuccess", "Home")); //로그인 성공 페이지로 이동 } } // 로그인 실패 ModelState.AddModelError(string.Empty, "사용자 ID 혹인 비밀번호가 올바르지 않습니다."); } return(View(model)); }
public async Task <IActionResult> CommentAdd(NoteComments model) { if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { // 로그인이 안된 상태 return(RedirectToAction("Login", "Account")); } model.UserNo = int.Parse(HttpContext.Session.GetInt32("USER_LOGIN_KEY").ToString()); if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { await db.NoteComments.AddAsync(model); string returnUrl = "Detail?NoteNo=" + model.NoteNo; if (db.SaveChanges() > 0) { return(Redirect(returnUrl)); // 현재 게시물로 이동 } } ModelState.AddModelError(string.Empty, "댓글 내용을 저장할 수 없습니다."); } return(View(model)); }
public IActionResult Login(LoginViewModel model) { if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { //Linq - Mathod chaining *** Linq query method *** // => : A Go to B //var user = db.Users.FirstOrDefault(u => u.UserId == model.UserId && u.UserPassword == model.UserPassword); //memory leaking var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword)); // if....No ID??? // var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId)); if (user != null) { //Success //HttpContext.Session.SetInt32(key, value); HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSuccess", "Home")); } } //Fail ModelState.AddModelError(string.Empty, "User is not exist."); } return(View(model)); }
public IActionResult Add(Note model) { if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { // 로그인 안된 상태 return(RedirectToAction("Login", "Account")); } model.UserNo = int.Parse(HttpContext.Session.GetInt32("USER_LOGIN_KEY").ToString()); // Note 에서 받아야할 모든 값을 받았는지 체크 ( Note의 [Reqired] 가 있는 컬럼들 ) if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { db.Notes.Add(model); if (db.SaveChanges() > 0) // 성공개수 반환함. { return(Redirect("Index")); // 동일한 컨트롤러면 RedirectToAction 안 써도 됨 } } ModelState.AddModelError(String.Empty, "게시물을 저장할 수 없습니다."); // 전역적 에러 메세지 } return(View(model)); // 뭔가 잘못된게 있으면 model 넘겨서 어떤게 잘못된지 찾는다. }
public IActionResult Login(LoginViewModel model) { // ID, 비밀번호 - 필수 if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { // Linq - 메서드 체이닝 // => : A Go to B 란 의미 //var user = db.Users.FirstOrDefault(u=>u.UserId == model.UserId && u.UserPassword == model.UserPassword); var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword)); if (user != null) { //HttpContext.Session.SetInt32(key, value); HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); // 로그인에 성공했을 때 return(RedirectToAction("LoginSucess", "Home")); //로그인 성공 페이지로 이동 } } // 로그인에 실패했을 때 // 사용자 ID 자체가 회원가입 x 경우 ModelState.AddModelError(string.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다."); // 사용자 ID 자체가 회원가입 x 경우 //ModelState.AddModelError(string.Empty, "사용자 ID가 존재하지 않습니다."); } return(View(model)); }
//[HttpPost] public IActionResult Login(LoginViewModel model) { // User ID, Password - Required if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { // Linq - method chain // => : A Go to B var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword)); if (user != null) { //Login Sucessful //HttpContext.Session.SetInt32(key, value); HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSucess", "Home")); //Redirects to LoginSucess View in Home controller } } //Login Failed ModelState.AddModelError(string.Empty, "User ID or User Password is not correct."); } return(View(model)); }
public IActionResult Login(LoginViewModel model) { // ID, PW - 필수 ( Required 조건 체크 ) -- 기존 User 객체는 이름까지 Required 라서 ID , PW 만 필요한 View를 만들어준다. if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) // DB를 열고 닫겠다! { // Linq 쿼리식 - 메서드 체이닝 // => : A Go to B var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword) ); if (user != null) { //로그인 성공 //HttpContext.Session.SetInt32(key, value); -- 세션에 등록하기 HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSuccess", "Home")); // 로그인 성공 페이지로 이동 } } //로그인 실패 ModelState.AddModelError(String.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다."); } return(View(model)); }
public IActionResult Login(LoginViewModel model) { //ID, 비밀번호 - 필수 if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { //Linq - 메서드 체이딩 (연결 시켜주는 것) // ==> : A go to B //var user = db.Users //.FirstOrDefault(u => u.UserId == model.UserId && u.UserPassWord == model.UserPassWord); var user = db.Users .FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassWord.Equals(model.UserPassWord)); if (user != null) { //로그인에 성공했을 때 //HttpContext.Session.SetInt32(key,value); //key는 식별자가 필요하다. value : 실제 데이터 값 (사용자 번호) HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSuccess", "home")); } //로그인에 실패했을 때 //사용자 ID 자체가 회원가입이 안되는 경우 } ModelState.AddModelError(string.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다."); } return(View(model)); }
public async Task <IActionResult> Index() { using (var db = new AspnetNoteDbContext()) { var MainNote = await db.Notes.Include(uwn => uwn.User).OrderByDescending(uwn => uwn.NoteNo).Take(5).ToListAsync(); return(View(MainNote)); } }
/// <summary> /// 게시물 리스트 /// </summary> /// <returns></returns> public IActionResult Index() { if (HttpContext.Session.GetInt32("LOGIN_KEY") == null) { return(RedirectToAction("Login", "Account")); } using (var db = new AspnetNoteDbContext()) { var list = db.Notes.ToList(); return(View(list)); } }
/// <summary> /// 게시판 상세보기 /// </summary> /// <param name="noteNo"></param> /// <returns></returns> public IActionResult Detail(int noteNo) { if (HttpContext.Session.GetInt32("LOGIN_KEY") == null) { return(RedirectToAction("Login", "Account")); } using (var db = new AspnetNoteDbContext()) { var note = db.Notes.FirstOrDefault(u => u.NoteNo.Equals(noteNo)); return(View(note)); } }
public IActionResult Register(User model) { if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { db.Users.Add(model); db.SaveChanges(); } return(RedirectToAction("Index", "Home")); } return(View(model)); }
public IActionResult Register(User model) { if (ModelState.IsValid) // 사용자에게 필수 입력 내용들이 모두 입력을 받았는지 확인하는 명령 { using (var db = new AspnetNoteDbContext()) //false가 나오면 using문 사용 불가 / model로 돌아간다 { db.Users.Add(model); // 메모리로 올리는 것 db.SaveChanges(); // 실제 sql에 저장하는 명령 } return(RedirectToAction("Index", "Home")); // 다른 뷰로 전달 할 때 홈 컨트롤러에 있는 인덱스 뷰로 전달을 하는 명령 } return(View(model)); }
// GET: /<controller>/ public IActionResult Index() { if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { // Login Status return(RedirectToAction("Login", "Account")); } //var list = new List<Note>(); using (var db = new AspnetNoteDbContext()) { var list = db.Notes.ToList(); // Will bring all list return(View(list)); } }
/// <summary> /// 게시판 리스트 /// </summary> /// <returns></returns> /// 비동기 및 페이징기능 추가 /// 검색 기능 추가 public async Task <IActionResult> Index(string searchType, string search, int page = 1) { using (var db = new AspnetNoteDbContext()) { // Notes 와 User 테이블 조인 //var UsersWithNotes = db.Notes.Include(uwn => uwn.User).OrderByDescending(uwn => uwn.NoteNo).ToListAsync(); //return View(await UsersWithNotes); var query = db.Notes.AsNoTracking().Include(uwn => uwn.User).OrderByDescending(uwn => uwn.NoteNo).AsQueryable(); // select box 검색 기능 추가 if (!string.IsNullOrWhiteSpace(search)) { switch (searchType) { case "NoteTitle": query = query.Where(uwn => uwn.NoteTitle.Contains(search)); break; case "UserName": query = query.Where(uwn => uwn.User.UserName.Contains(search)); break; case "NoteContents": query = query.Where(uwn => uwn.NoteContents.Contains(search)); break; case "NoteAll": query = query.Where(uwn => uwn.NoteTitle.Contains(search) || uwn.NoteContents.Contains(search)); searchType = "NoteTitle"; break; default: query = query.Where(uwn => uwn.NoteTitle.Contains(search) || uwn.NoteContents.Contains(search)); searchType = "NoteTitle"; break; } // query = query.Where(uwn => uwn.NoteTitle.Contains(search)); } var UsersWithNotes = await PagingList.CreateAsync(query, 10, page, "NoteNo", searchType); UsersWithNotes.RouteValue = new RouteValueDictionary { { "filter", search } }; return(View(UsersWithNotes)); } }
/// <summary> /// 게시판 상세 /// </summary> /// <param name="NoteNo"></param> /// <returns></returns> public async Task <IActionResult> Detail(int NoteNo) { using (var db = new AspnetNoteDbContext()) { dynamic dNoteComments = new ExpandoObject(); // Notes(게시물) 와 NoteComments(게시물 댓글) dNoteComments.note = await db.Notes.Include(uwn => uwn.User).FirstOrDefaultAsync(n => n.NoteNo.Equals(NoteNo)); dNoteComments.noteComments = await db.NoteComments.Include(nc => nc.User).Where(nc => nc.NoteNo.Equals(NoteNo)).ToListAsync(); dNoteComments.CommentsCount = await db.NoteComments.CountAsync(nc => nc.NoteNo.Equals(NoteNo)); dNoteComments.UserNo = HttpContext.Session.GetInt32("USER_LOGIN_KEY"); return(View(dNoteComments)); } }
public IActionResult Login(LoginViewModel model) { // ID, 비밀번호 - 필수 if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { // Linq - 메서드 체이닝 // 데이터베이스에 있는 유저 테이블중 한개를 검색하는데 일치하는 것을. // 익명람다식 사용. => : A Go To B //var user = db.Users // .FirstOrDefault(u => u.UserId == model.UserId && u.UserPassword == model.UserPassword); // 메모리 누수 방지 var user = db.Users .FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword)); //var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId)); /* if (user == null) * { * // 로그인에 실패했을 때 * ModelState.TryAddModelError(string.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다."); * * // 사용자 ID 자체가 회원가입 X 경우 - 로그인에서는 권장하지 않는다. 회원가입에서나 권장. * // ModelState.TryAddModelError(string.Empty, "사용자 ID 가 존재않는다." ); * } * else * { * // 로그인에 성공했을 때 * return RedirectToAction("LoginSuccess", "Home"); // 로그인 성공 페이지로 이동 * } */ // if 문 정리 else 가 없어도 논리적으로 동일하기 때문에 굳이 else 쓸 필요 없음. // 실패메세지도 굳이 using 문 안에 있을 필요 없음. if (user != null) { // 로그인에 성공했을 때 //HttpContext.Session.SetInt32(key, value); key는 특정 세션을 식별하는 식별자, value는 실제 데이터 값 HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("LoginSuccess", "Home")); // 로그인 성공 페이지로 이동 } } // 로그인에 실패했을 때 ModelState.TryAddModelError(string.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다."); } return(View(model)); }
public IActionResult Register(User model) { if (ModelState.IsValid) { //Java try(sqlSession) {} catch(){} //데이터베이스 입출력을 할 때에 openconnection after close using (var db = new AspnetNoteDbContext()) { //메모리까지 올리기 db.Users.Add(model); //sql로 저장하기 db.SaveChanges(); } //Home컨트롤러에 있는 Index action으로 리다이렉트하겠다. return(RedirectToAction("Index", "Home")); } return(View(model)); }
public IActionResult Register(User model)// 메서드이름만 같고 인자 다르게해서 오버로딩한다. { // 벨리데이션 체크? if (ModelState.IsValid) // 사용자한테 필수로 입력받아야할 내용을 모두 입력 받았느냐 { using (var db = new AspnetNoteDbContext()) { // 사용자 한테 입력받은 데이터가 model 이기 때문에 model은 사용한다. // ★ 모두 필수적으로 입력을 받았는지 안받았는지 판단하는 기준은 Model에 있는 [Required] 기준이다 // 즉, Required된 값이 모두 입력받지 못하면 IsValid는 false이다.★ db.Users.Add(model); // 메모리 까지 올리기 -> 디버깅해보면 OnConfiguring 간다 db.SaveChanges(); // 실제 sql로 저장(DB에 commit) } // Register View에서 다른 뷰로 전달 return(RedirectToAction("Index", "Home")); // HomeController에 있는 Index 액션으로 전달을 하겠다. } // 벨리데이션 체크 실패하면 return(View(model)); // Register 뷰로 다시 돌아간다. }
/// <summary> /// 게시물 수정 /// </summary> /// <returns></returns> public async Task <IActionResult> Edit(int NoteNo) { if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == null) { // 로그인이 안된 상태 return(RedirectToAction("Login", "Account")); } using (var db = new AspnetNoteDbContext()) { // Notes 와 User 테이블 조인 var note = await db.Notes.Include(uwn => uwn.User).FirstOrDefaultAsync(n => n.NoteNo.Equals(NoteNo)); if (HttpContext.Session.GetInt32("USER_LOGIN_KEY") == note.UserNo) { return(View(note)); } // 메세지나 오류 처리 해야함 또는 오류페이지 만들어야 함 return(RedirectToAction("Error", "Home")); } }
public IActionResult Register(User model) { //유효성 체크 if (ModelState.IsValid) { /* * java에서는 try{}catch{} 으로 처리 * c#에서는 using문을 사용함 * using에서 db설정 후 해당 구문을 빠져나가면 db가 자동으로 닫히게 됨. */ using (var db = new AspnetNoteDbContext()) { db.Users.Add(model); //메모리에 올라감 db.SaveChanges(); //sql에 업로드 return(RedirectToAction("index", "Home")); } } return(View(model)); }
public IActionResult Login(LoginViewModel model) { if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { //linq - 메서드 체인닝으로 처리 함. //var user = db.Users.FirstOrDefault(u => u.User_Id == model.User_Id && u.User_Password == model.User_Password); var user = db.Users.FirstOrDefault(u => u.User_Id.Equals(model.User_Id) && u.User_Password.Equals(model.User_Password)); if (user != null) { //Login성공 return(RedirectToAction("LoginSuccess", "Home")); //로그인 성공 페이지로 이동 } } //Login에 실패 ModelState.AddModelError(string.Empty, "사용자 ID 혹은 비밀번호가 올바르지 않습니다."); } return(View(model)); }
public IActionResult Register(User model) { // Check validation // C# Java try(SqlSession){} catch(){} if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { // 메모리 상에 올라감 db.Users.Add(model); // sql로 저장 db.SaveChanges(); } // 돌아가는 위치 return(RedirectToAction("Index", "Home")); } return(View(model)); }
public IActionResult Login(LoginViewModel model) { if (ModelState.IsValid) { using (var db = new AspnetNoteDbContext()) { // Linq Method Chaining var user = db.Users.FirstOrDefault(u => u.UserId.Equals(model.UserId) && u.UserPassword.Equals(model.UserPassword)); if (user != null) { // Login Success //HttpContext.Session.SetInt32(key, value); HttpContext.Session.SetInt32("USER_LOGIN_KEY", user.UserNo); return(RedirectToAction("Index", "Home")); } } // Login Fail ModelState.AddModelError(string.Empty, "Invalid User"); } return(View(model)); }
public IActionResult Register(User model) { // User.cs 의 Required 가 있는데 사용자가 폼에서 하나라도 입력을 안하면 // IsValid 는 false를 반환함. Required가 있는 항목만 검사함 if (ModelState.IsValid) { // java try(sqlsession){} catch(){} // C# // using문을 써가지고 데이터컨텍스트를 데이터커넥션을 열고 // using문이 끝나고 바깥에 나가면 자동으로 클로징이 되서 using문 사용 using (var db = new AspnetNoteDbContext()) { // 메모리까지 올림 db.Users.Add(model); // 실제 sql에 저장 db.SaveChanges(); // Commit } return(RedirectToAction("index", "Home")); } return(View(model)); }