繁体   English   中英

asp.net mvc 5如何从URL获取ID并将其保存在另一个表中

[英]asp.net mvc 5 How to get id from url and save it in another table

嘿,我使用MVC 5剃须刀,这是我的新手。

我想获取我在URL中输入的项目ID,例如/ 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 id更改为字符串,我得到的错误是无法转换为int我得到相同的错误

我的桌子

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);

好吧,假设您传递的ID是项目的ID,则可以通过2种方式对其进行修复:

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");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM