获得" Id"来自MVC 4中的URL的值

时间:2013-10-17 10:34:31

标签: c# url asp.net-mvc-4 .net-4.0 routing

我的网址就像,

localhost:19876/PatientVisitDetail/Create?PatientId=1

我必须从网址中检索PatientId并将其传递给请求。

我试过了,

    Url.RequestContext.Values["PatientId"] => System.Web.Routing.RequestContext does not contain a definition for 'Values' and
no extension method 'Values' accepting a first argument of type 'System.Web.Routing.RequestContext'

我再试一次,

RouteData.Values["PatientId"]  => an object reference is required for the non static field, method
or property 'System.Web.Routing.RouteData.Values.get'

修改

根据Jason在下面的评论,我尝试Request["SomeParameter"]并且它有效。但是,还有一个警告要避免这种情况。

任何想法如何避免我的情况?

我的情景:

我的控制器中有一个Create动作方法用于创建新患者。

但是,我需要回到最后一页,

如果我给出类似的东西,

 @Html.ActionLink("Back to List", "Index") 


=> this wont work because my controller action method has the following signature,

public ActionResult Index(int patientId = 0)

所以,在这种情况下,我必须传递patientId

2 个答案:

答案 0 :(得分:7)

你在这里有效地规避了MVC的重点。有一个接受PatientId

的行动
public ActionResult Create(int patientId)
{
    return View(patientId);
}

然后在您的视图中使用该值,例如

@model int

@Html.ActionLink("Back", "LastAction", "LastController", new { patientId = @Model })

这是MVC方式。

答案 1 :(得分:2)

在您的控制器中,您可以将PatientId放入ViewBag并从您的视图中访问

public ActionResult Create()
{

    ViewBag.PatientId = 1;
    return View();
}

查看

Html.ActionLink("Back", "Index", new { PatiendId = ViewBag.PatientId })