C# 为了从控制器访问数据,是否始终必须设置ViewBag变量
我有一个这样的控制器:C# 为了从控制器访问数据,是否始终必须设置ViewBag变量,c#,.net,razor,viewbag,C#,.net,Razor,Viewbag,我有一个这样的控制器: public ActionResult Index() { ViewBag.Title = "Index"; ViewBag.LoggedIn = TheUser.CheckStatus(); return View(); } 问题是,我必须将LoggedIn设置为我的另一个函数user.CheckStatus()的输出,这样我就可以用razor引用
public ActionResult Index()
{
ViewBag.Title = "Index";
ViewBag.LoggedIn = TheUser.CheckStatus();
return View();
}
问题是,我必须将LoggedIn设置为我的另一个函数user.CheckStatus()的输出,这样我就可以用razor引用它了。。。Razor中是否有直接访问功能的方法?例如
@TheUser.CheckStatus
而不是
@ViewBag.LoggedIn
使用ViewModel类(然后您的视图将是强类型的,并且您将能够使用“经典”帮助程序)
MVC中向视图传递信息的推荐方法是创建特定于该视图的模型(也称为视图模型),例如 但是,要回答您的问题: Razor中是否有直接访问功能的方法 如果您使用ASP.NET成员身份,则可以在请求中使用属性,例如
@Request.IsAuthenticated
否则,您确实需要将此信息传递给视图(无论是通过ViewBag
/view model等)
或者,您可以为Request
编写自己的扩展方法,该方法允许您在视图中直接访问它:
@Request.UserLoggedIn()
甚至作为HtmlHelper
public static class HtmlHelperExtensions
{
public static bool UserIsLoggedIn(this HtmlHelper helper)
{
return /* authentication code here */
}
}
然后在视图中,您可以使用
@Html.UserIsLoggedIn()
,我认为这是您所追求的。使用“ViewModel”类而不是ViewBag。对于.NET来说,它们是什么?能给我一些语法示例:D吗
@Request.UserLoggedIn()
public static class HtmlHelperExtensions
{
public static bool UserIsLoggedIn(this HtmlHelper helper)
{
return /* authentication code here */
}
}