0

我正在将我的 asp.net 站点转换为 MVC 4。我的站点有一个名为 loginbox 的控件,它提示用户输入用户名和密码。该控件还公开了一个托管页面可以调用的称为 IsLoggedIn 的方法。我想继续将登录逻辑封装在我的登录框控件中,并以类似的方式从父级页面调用它(即 loginBoxInstance.IsLoggedIn())。我怎么做?

4

1 回答 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 回答