如何在ASP.NET MVC4中将Id从一个视图传送到另一个视图?

时间:2013-09-22 01:49:52

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

如何携带我的ID(URL中的“27”,到下一个视图)

我的第一个视图中的网址:

http://localhost:11956/Forum/Details/27

在此视图中,我使用ActionLink打开一个新视图,但新窗口没有id。这是我搁浅的地方。我可以偶然@Url-id...处理其他内容,或者在C#ForumContrller中处理它是否更好?如果是,那怎么办呢?

@Html.ActionLink("Post reply", "CreateTopicMessage" , new { id=@Url-id... })

2 个答案:

答案 0 :(得分:1)

路线中{id}参数的值存储在RouteData集合中。这可以从视图中访问:

@ViewContext.RouteData["id"]

所以你的代码应该是:

@Html.ActionLink("Post reply", "CreateTopicMessage" , new { id= ViewContext.RouteData["id"] })

虽然,我认真建议您在Controller操作中将该id分配给模型的属性,因为您的View实际上不应该具有任何依赖关系或路由知识。类似的东西:

class ForumController : Controller
{
    public ActionResult Detail(int id)
    {
        Forum model = LoadForumById(id);
        return View(model); // Forum has an "Id" property
    }
}

然后,您视图中的操作链接代码为:

@Html.ActionLink("Post reply", "CreateTopicMessage" , new { id = Model.Id })

答案 1 :(得分:0)

我认为你的语法有点偏离:

@Html.ActionLink(
"Post Reply",
"CreateTopicMessage", 
"Forum", //I'm guessing here
 new { id = @Url-id }, //assign your route value
 null //for html attributes, it can be left null
)
相关问题