我有一个ASP.NET MVC 4博客已完成90%,但我需要一件事 - 我有一个网页让我们说索引/ secretPage但我希望能够导航到这个webPage只有在我从另一个重定向后 - 让我们说索引/重定向。如果地址是硬编码的,则不应导航,如果访问者来自不同的链接,例如blog / post / 24,则它也应该无法导航。 我希望我的问题很清楚,而不是你的帮助。
答案 0 :(得分:2)
如果直接调用,您还可以使用显示另一个页面的操作来屏蔽秘密页面。
在此示例中,有2个操作。返回伪造视图的“秘密”和真实呼叫的“检查”。在这个动作中,bool变量'allowSecret'被检查,然后用户看到视图'secret.cshtml'如果允许,或者'index.cshtml'如果没有。
以下是具有该功能的简单控制器的示例代码:
using System.Web.Mvc;
namespace Test.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View("Index");
}
public ActionResult Check()
{
// check if user is allowed to show secret page
if(allowSecret == true)
return View("Secret");
// Otherwise return view 'index.cshtml'
return View();
}
public ActionResult Secret()
{
// Always shows view 'index.cshtml' if url is ".../secret"
return View("Index");
}
}
}
检查失败后,您还可以重定向到其他操作,而不是调用“假视图”:
return RedirectToAction("Index")
不同之处在于用户在浏览器中看到的网址。返回视图不会更改URL,重定向到另一个操作会将URL更改为更改的路径。
当然,您可以将支票放在控制器后面的另一个类中。
另一种选择是使用'NonAction'属性:
[NonAction]
public ActionResult Check()
{
...
}
希望有所帮助,
DD
答案 1 :(得分:0)
您可以UrlReferrer
了解谁是当前页面的引用并抛出异常或重定向回来
HttpContext.Current.Request.UrlReferrer
http://msdn.microsoft.com/en-IN/library/system.web.httprequest.urlreferrer.aspx
但是出于什么原因你需要这个。它对我来说看起来像个好设计。
希望这有帮助