Mình tạo 1 action thêm mới tài khoản, có liên kết lấy id ở các bảng phụ, nhưng khi lưu lại thì báo lỗi, mọi người chỉ giúp mình giải pháp sửa lỗi với, mình mới học nên chưa rành lắm.
Khi nhấn nút để Submit sữ liễu vào thì bị báo lỗi chỗ db.SaveChangs()
Trong Controller:
sing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Model;
namespace test.Controllers
{
public class CreateController : Controller
{
//
// GET: /Create/
public ActionResult Index()
{
return View();
}
//
// GET: /Create/Details/5
Db db = new Db();
public ActionResult CreateMember()
{
User obj = new User();
obj.SelectListBdh = new SelectList(db.Bdhs.ToList(), "BdhId", "BdhFullname");
obj.SeclectListFg = new SelectList(db.Fgs.ToList(), "FgId", "FgName");
obj.SelectListLevel = new SelectList(db.Levels.ToList(), "LevelId", "LevelName");
return View(obj);
}
[HttpPost]
public ActionResult CreateMember(User obj)
{
db.Users.Add(obj);
db.SaveChanges();
return View(obj);
}
}
}
Trong View:
@model Model.User
@{
ViewBag.Title = "CreateMember";
}
<a href="~/Views/Login/Index.cshtml">~/Views/Login/Index.cshtml</a>
<a href="~/Views/Create/CreateMember.cshtml">~/Views/Create/CreateMember.cshtml</a>
<h2>CreateMember</h2>
@using (Html.BeginForm("CreateMember", "Create", FormMethod.Post, new { @class = "form" }))
{ <div>
<p>
<label>Nhập email học viên:</label>
@Html.TextBoxFor(m => m.UserId)
</p>
<p>
<label>Nhập họ và tên đệp học viên</label>
@Html.TextBoxFor(m => m.UserLastName)
</p>
<p>
<label>Nhập tên học viên </label>
@Html.TextBoxFor(m => m.UserFirstName)
</p>
<p>
<label>Nhập điện thoại học viên </label>
@Html.TextBoxFor(m => m.UserPhone)
</p>
<p>
<label>Nhập ngày sinh </label>
<input type="date" name="UserBirth" />
</p>
<p>
<label>Chọn Ban Điều hành đã tư vấn </label>
@if (Model.SelectListBdh != null)
{
@Html.DropDownListFor(m => m.UserAddId, Model.SelectListBdh)
}
else
{
<h3>Ban level cho hoc vien</h3>
}
@if (Model.SelectListLevel!= null)
{
@Html.DropDownListFor(m => m.LevelNownId, Model.SelectListLevel)
}
else
{
<h3>Chưa có bảng level</h3>
}
<h3>Ban lớp bắt đầu cho học viên</h3>
}
@if (Model.SeclectListFg != null)
{
@Html.DropDownListFor(m => m.StarMark, Model.SeclectListFg)
}
else
{
<h3>Chưa có bảng lớp</h3>
}
</p>
<p>
<input type="submit" class="btn-default" value="Hoàn thành" />
</p>
</div>
Và Database sql:
Create table Level --Danh sách Ban điều hành hỗ trợ
(
LevelId int identity primary key,
LevelName nvarchar(128),
StarMin int DEFAULT 0,
)
Insert into Level(LevelName,StarMin)
VALUES (N'NHẬP MÔN', 0),(N'XE BÍCH', 16), (N'XE CHUỒN', 32)
create table Bdh
(
BdhId int identity primary key,
BdhName nvarchar(128),
BdhLastName nvarchar(128),
BdhFullname nvarchar(256),
HeadId int DEFAULT 1,
)
insert into Bdh ( BdhLastName, BdhName, BdhFullname, HeadId)
values (N'Chưa cập nhật', N'Chưa cập nhật', N'Chưa cập nhật', 1)
,
( N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long', 5)
Create table Coach
(
CoachId int identity primary key,
CoachName nvarchar(128),
CoachLastName nvarchar(128),
CoachFullname nvarchar(256),
HeadId int DEFAULT 1,
)
insert into Coach( CoachLastName, CoachName, CoachFullname, HeadId)
values (N'Chưa cập nhật', N'Chưa cập nhật', N'Chưa cập nhật', 1),
( N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long', 5)
Create table Train
(
TrainId int identity primary key,
TrainName nvarchar(128),
TrainLastName nvarchar(128),
TrainFullname nvarchar(256),
HeadId int DEFAULT 1,
)
insert into Train (TrainLastName, TrainName, TrainFullname, HeadId)
values (N'Chưa cập nhật', N'Chưa cập nhật', N'Chưa cập nhật', 1)
, ( N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long', 5)
Create table Users
(
UserId varchar(50) primary key,
UserName nvarchar(128), --Tên đang nhập
UserUserName nvarchar(128) , --Ten hiển thị dụng
UserFullname nvarchar(256),
UserPass nvarchar(128) ,
UserEmail varchar(128) ,
UserImage nvarchar(320),
UserCreateUserId int DEFAULT 1, --nguowi taoj ra thong tin ban dau (ke toans,..)
UserCreateDate datetime DEFAULT getdate(),
UserFirstName nvarchar(120),
UserLastName nvarchar(64),
UserPhone nvarchar(20),
UserBirth datetime DEFAULT getdate(),
HappBirth bit DEFAULT 0,
UserAddId int DEFAULT 1, --Id nguoi tu van ban dau (bdh)
LevelNownId int DEFAULT 1,
StarMark int DEFAULT 0,
FgBeginId int DEFAULT 1,
FgNownId int DEFAULT 1,
FgEndId int DEFAULT 1 , -- Fg cao nhất mà lần đóng trước đã đóng
FgFutureId int DEFAULT 1 -- Fg cao nhất mà lần đang đóng sẽ đóng (nếu người đóng lần đầu tiên thì FgFutureId = FgEndId)
)
go
insert into Users(UserId, UserName, UserPass, UserCreateUserId, UserFirstName, UserLastName, UserPhone,
UserAddId)
values ('[email protected]', N'Vô danh', N'123456', 1, N'Vô danh',N'Vô danh','00000000000',1)
insert into Users (UserId,UserLastName, UserFirstName, UserFullname)
values ('[email protected]', N'Nguyễn Lê Thăng', N'Long', N'Nguyễn Lê Thăng Long'),
('[email protected]', N'Nguyễn Văn', N'Kiệt', N'Nguyễn Văn Kiệt')
Create table Fg
(
FgId int identity primary key,
FgName nvarchar(128),
FgGroupId int DEFAULT 1 ,
FgProgrameId int DEFAULT 1,
FgDiscr nvarchar(max)
)
go
insert into Fg(FgName)
values(N'Chưa học'),('Fg1'), ('Fg2'), ('Fg3'), ('Fg4'), ('Fg5'), ('Fg6'), ('Fg7'), ('Fg8'), ('Fg9')
go
Use [ACTFGV2]
go
set ansi_nulls on
go
set quoted_identifier on
go
create procedure [dbo].[AccountLogin]
@UserName nvarchar(20),
@Password nvarchar(50)
as
begin
declare @count int
declare @res bit
select @count =count(*) from Users where UserId=@UserName and UserPass=@Password
if @count >0
set @res =1
else
set @res=0
select @res
end