如何在MVC 4用户控件上公开和调用方法

时间:2013-08-19 14:43:27

标签: asp.net-mvc-4

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

1 个答案:

答案 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表单的范式非常不同,我认为你应该研究一种更合适的方法。