ASP.NET MVC中的路由(链接表)

时间:2017-03-24 08:52:26

标签: asp.net asp.net-mvc asp.net-mvc-4 routing

我有采访和Interwier

当我创建采访时,我需要在View中生成链接并将其发送给interwier。

因此,如果Interview_id为=5,面试官将接受面试时的访问id = 5

表格Intervier与面试表

相关联

这是Interviewer表

CREATE TABLE [dbo].[Interwiers] (
[Interwier_id] INT            IDENTITY (1, 1) NOT NULL,
[FIO]          NVARCHAR (MAX) NULL,
[Email]        NVARCHAR (MAX) NULL,
[Telephone]    NVARCHAR (MAX) NULL,
[Birthday]     DATETIME       NOT NULL,
[City]         NVARCHAR (MAX) NULL,
[Salary]       NVARCHAR (MAX) NULL,
[English]      NVARCHAR (MAX) NULL,
[Interview_Id] INT            NULL,
[Status]       NVARCHAR (MAX) NULL,
PRIMARY KEY CLUSTERED ([Interwier_id] ASC),
CONSTRAINT [FK_Interwiers_ToTable] FOREIGN KEY ([Interview_Id]) REFERENCES [dbo].[Interviews] ([Interview_Id]) ON DELETE CASCADE

现在我生成了像http://localhost:51542/Interwier/Welcome这样的链接,我需要这样的'http://localhost:51542/Interwier/Welcome/5',所以如果在Interview_Id中表格中的Interwier填充数据会自动为id = 5。< / p>

我怎么能意识到这一点?

也许我没有清楚地写下我的问题。如果不是,请告诉我不清楚,我会编辑它

更新

这是Interwier的控制器,这里我将数据写入表

 public ActionResult Welcome()
    {
        return View();
    }

    // POST: Interwier/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Welcome([Bind(Include = "Id,FIO,Email,Telephone,Birthday,City,English,Salary")] Interwier interwierModel)
    {
        if (ModelState.IsValid)
        {
            db.InterwierModels.Add(interwierModel);
            db.SaveChanges();
            return RedirectToAction("WebCamCheck");
        }

        return View(interwierModel);
    }

UPDATE2

我尝试写逻辑

这是开始屏幕,这里我创建了面试(选择空缺并写了关于面试的详细信息),所以我创建了Interwiev id。已经完成了。

enter image description here

之后我创建问题并将它们添加到面试中,然后我点击下一步并添加到表格并链接到Interview_id的问题

这是模型

enter image description here

之后,我需要向人们发送邀请。有下一个模型

enter image description here

在链接中,我需要生成面试链接,而不是像我之前写的那样。

我需要用id生成它。然后,用户打开它并填写有关他的信息,它将链接到此面试ID。

2 个答案:

答案 0 :(得分:0)

默认路由值设置为{controller} / {action} / {id}。 生成链接时,您可以使用routeValues来设置ID。 例如。如果链接是从控制器动作生成的,那么

public ActionResult MyAction()
{
 //code
 Return RedirectToAction("Welcome", "Interview", new{InterviewId = Interview.InterviewId});

}

这将导致URL localhost:[portNumber] / Interview / Welcome / InterviewId

答案 1 :(得分:0)

如果您正在使用Entity框架来保存数据,那么就这样做了

假设Interwiers tabel只有2列Like Id和name =

DemoEntities db = new DemoEntities();
Interwiers  objInterwiers  = new Interwiers();
objInterwiers.Email = "aman@gmail.com";
db.Interwiers.Add(objInterwiers);
db.SaveChanges();

现在,如果在表格中设置自动增量,则无需在此处输入id字段。

保存数据后,您可以获得如下信息:

var id = objInterwiers.Id;

最近添加了。

你想要重定向

return Redirect("/Interwier/Welcome/"+id);

控制器中的整个代码如下:

public ActionResult TestSaveData()
{
    DemoEntities db = new DemoEntities(); // your entity name
    Interwiers  objInterwiers  = new Interwiers(); //table name
    objInterwiers.Email = aman@gmail.com;
    db.Interwiers.Add(objInterwiers);
    db.SaveChanges();
    return RedirectToAction("/Interwier/Welcome/"+id);
}