Эй, я использую бритву mvc 5, и я новичок в этом.
Я хочу получить идентификатор проекта, который я укажу в URL-адресе eg/bug/create/4 (число 4 означает id проекта).
и сохраните его в таблице ошибок
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include="BugID,Title,Description,AssigneeID,Priority,Status,Projects_ProjectID")] Bug bug, int id)
{
var currentUser = manager.FindById(User.Identity.GetUserId());
// is empty in DB
ViewBag.getIdFromUrlIsHere =id;
if (ModelState.IsValid)
{
bug.User = currentUser;
// I get an error here
bug.Projects = id;
db.Bugs.Add(bug);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.AssigneeID = new SelectList(db.Users, "Id", "UserName", bug.AssigneeID);
return View(bug);
}
Может кто-нибудь мне помочь?
Ошибка, которую я получаю, не может конвертировать в int, если я меняю int id в моем параметре на строку. Я получаю ту же ошибку
МОЙ БУГОВОЙ ТАБЛИЦ
CREATE TABLE [dbo].[Bugs] (
[BugID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NOT NULL,
[Description] NVARCHAR (MAX) NOT NULL,
[AssigneeID] NVARCHAR (128) NULL,
[Priority] NVARCHAR (MAX) NOT NULL,
[Status] NVARCHAR (MAX) NOT NULL,
[ApplicationUser_Id] NVARCHAR (128) NULL,
[Projects_ProjectID] INT NULL,
[User_Id] NVARCHAR (128) NULL,
CONSTRAINT [PK_dbo.Bugs] PRIMARY KEY CLUSTERED ([BugID] ASC),
CONSTRAINT [FK_dbo.Bugs_dbo.AspNetUsers_ApplicationUser_Id] FOREIGN KEY ([ApplicationUser_Id]) REFERENCES [dbo].[AspNetUsers] ([Id]),
CONSTRAINT [FK_dbo.Bugs_dbo.Projects_Projects_ProjectID] FOREIGN KEY ([Projects_ProjectID]) REFERENCES [dbo].[Projects] ([ProjectID]),
CONSTRAINT [FK_dbo.Bugs_dbo.AspNetUsers_AssigneeID] FOREIGN KEY ([AssigneeID]) REFERENCES [dbo].[AspNetUsers] ([Id]),
CONSTRAINT [FK_dbo.Bugs_dbo.AspNetUsers_User_Id] FOREIGN KEY ([User_Id]) REFERENCES [dbo].[AspNetUsers] ([Id])
);
GO
CREATE NONCLUSTERED INDEX [IX_ApplicationUser_Id]
ON [dbo].[Bugs]([ApplicationUser_Id] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_Projects_ProjectID]
ON [dbo].[Bugs]([Projects_ProjectID] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_AssigneeID]
ON [dbo].[Bugs]([AssigneeID] ASC);
GO
CREATE NONCLUSTERED INDEX [IX_User_Id]
ON [dbo].[Bugs]([User_Id] ASC);
Хорошо, считая, что идентификатор, который вы передаете, является идентификатором проекта, который вы могли бы исправить его двумя способами:
if (ModelState.IsValid)
{
bug.User = currentUser;
//Retrieve the project from the database
var projectRecord = db.Projects.FirstOrDefault(p=>p.ProjectID == id);
bug.Projects = projectRecord;
db.Bugs.Add(bug);
db.SaveChanges();
return RedirectToAction("Index");
}
Или
if (ModelState.IsValid)
{
bug.User = currentUser;
//Set the project ID directly(i'm assuming you have a projectID property)
bug.Projects_ProjectID = id;
db.Bugs.Add(bug);
db.SaveChanges();
return RedirectToAction("Index");
}