我正在将我的 asp.net 站点转换为 MVC 4。我的站点有一个名为 loginbox 的控件,它提示用户输入用户名和密码。该控件还公开了一个托管页面可以调用的称为 IsLoggedIn 的方法。我想继续将登录逻辑封装在我的登录框控件中,并以类似的方式从父级页面调用它(即 loginBoxInstance.IsLoggedIn())。我怎么做?
问问题
317 次
1 回答
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 表单的范式非常不同,我认为您应该寻找一种更合适的方式来做到这一点。
于 2013-08-19T14:51:47.740 回答