Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在控制器ASP.NET MVC中获取视图名称_Asp.net Mvc - Fatal编程技术网

Asp.net mvc 在控制器ASP.NET MVC中获取视图名称

Asp.net mvc 在控制器ASP.NET MVC中获取视图名称,asp.net-mvc,Asp.net Mvc,我正在使用asp.NETMVC。我有4个页面显示事件列表(不同类型的事件),每个页面上的“详细信息”链接指向“EventDescription.aspx”视图 “EventDescription.aspx”有一个名为“返回事件”的链接,该链接必须将用户带到相应的页面 如果“详细信息”请求来自page1,“返回事件”链接需要指向page1.aspx。与page2.aspx、page3.aspx、page4.aspx相同 我的计划是在控制器操作“EventDescription”中捕获视图名称(pa

我正在使用asp.NETMVC。我有4个页面显示事件列表(不同类型的事件),每个页面上的“详细信息”链接指向“EventDescription.aspx”视图

“EventDescription.aspx”有一个名为“返回事件”的链接,该链接必须将用户带到相应的页面

如果“详细信息”请求来自page1,“返回事件”链接需要指向page1.aspx。与page2.aspx、page3.aspx、page4.aspx相同

我的计划是在控制器操作“EventDescription”中捕获视图名称(page1.aspx),并在显示“EventDescription.aspx”之前存储在ViewData中,并使用“返回事件”链接的ViewData值

如何从操作中的请求来源获取视图的名称


提前感谢。

在呈现页面时,还需要呈现一个链接,当单击“返回事件”时,该链接将指向正确的页面。这最好在控制器方法中设置,您可以随时访问所有必要的信息

一种简单的方法是将返回链接信息放入ViewData变量
(下面是未测试的伪代码)。在控制器方法中:

ViewData["ReturnPath"] = "/Content/Page/1";
在你看来:

<% =Html.ActionLink("Back To Events", ViewData["ReturnPath"]) %>

…如果你不介意那根神奇的绳子的话。这将为您提供调用操作。

如果您只想获取您来自的Url,您可以在操作中执行此操作

ViewData["ReturnPath"] = this.Request.UrlReferrer.AbsolutePath;

这将为您提供您所在页面的Url。如果从第1页开始,则转到EventDescription。在EventDescription操作中,ReturnPath ViewData的Url为Page1。反之亦然。

将返回路径放在TempData(而不是ViewData)中,它可以从调用页面传递到详细信息页面。另请参见

我建议您使用TempData而不是ViewData。例如,您可以有这样的设置

public ActionResult Details(int id)
{
   var event = repository.GetByID(id);
   if (event != null)
   {
      TempData["ReturnPath"] = Request.UrlReferrer.ToString();
      return View(event);
   }
   else { //....... ; }
}
在你看来,你可以有这样一个定期的ActionLink

<% =Html.ActionLink("Back To Events", TempData["ReturnPath"]) %>
<% =Html.ActionLink("Back To Events", "GoBack") %>
在你看来,一个正常的动作链接

<% =Html.ActionLink("Back To Events", TempData["ReturnPath"]) %>
<% =Html.ActionLink("Back To Events", "GoBack") %>

这样我就必须在4个动作方法中(针对4个页面)放置。我认为最好在接收显示eventDescription请求的Action方法中的一个位置设置。我使用它来生成链接,因此仅使用视图名称就足够了,因为我所有的Action方法名称都反映了视图名称。