我正在将我的asp.net站点转换为MVC 4.我的站点有一个名为loginbox的控件,它会提示用户输入用户名和密码。该控件还公开了一个名为IsLoggedIn的方法,托管页面可以调用该方法。我想继续将登录逻辑封装在我的loginbox控件中,并以类似的方式从父级页面调用它(即loginBoxInstance.IsLoggedIn())。我该怎么做?
答案 0 :(得分:0)
MVC没有用户控件的概念。 MVC的整个设置是将逻辑与视图分开。您可以通过创建单独的控制器和部分视图来实现类似的设置。
然后在主视图中,您可以在控制器上调用RenderAction,从而呈现局部视图。但是,这仅对渲染阶段有效,因此像IsLoggedIn()这样的东西不是你可以(或应该)在MVC中做的事情。
示例:
<强>控制器强>
public class LoginController
{
public ActionResult Login()
{
return PartialView();
}
}
部分视图
// Place this file in Views/Login/Login.cshtml
<div>
<!-- Your markup -->
</div>
主视图
@Html.RenderAction("Login", "Login")
这将允许您将登录呈现的视图部分(以及逻辑)分离为单独的控制器和视图,该视图可以包含在另一个视图中。
但是,您可能想要的是类似Action-attributes或从基本控制器类继承,它会为您处理所有这些。
MVC与Web表单的范式非常不同,我认为你应该研究一种更合适的方法。