MVC 中将信息传递给视图的推荐方法是创建特定于该视图的模型(也称为视图模型),例如
public class IndexViewModel
{
public string Title { get; set; }
public bool IsAuthenticated { get; set; }
}
....
public ActionResult Index()
{
return View(new IndexViewModel()
{
Title = "Index",
IsAuthenticated = UserIsLoggedIn()
});
}
但是,要回答您的问题:
Razor 中有没有办法直接访问某个功能?
如果您使用的是 ASP.NET Membership,您可以在请求上使用IsAuthenticated属性,例如
@Request.IsAuthenticated
否则,您确实需要将此信息传递给视图(无论是通过ViewBag
/view 模型等)
或者,您可以编写自己的扩展方法,Request
允许您直接在视图中访问它:
@Request.UserLoggedIn()
甚至作为一个HtmlHelper
例子
public static class HtmlHelperExtensions
{
public static bool UserIsLoggedIn(this HtmlHelper helper)
{
return /* authentication code here */
}
}
然后在您看来,您可以使用@Html.UserIsLoggedIn()
我认为您所追求的。