2012-02-20 23 views
0

我有点卡住,我将如何去将MVC3 C#中的登录表单移动到自创的 布局页面,这是在HTML中完成的,因此我可以将登录表单放入我的布局而不是点击登录链接?我在我的HTML设计中有一个框,我希望LOGIN页面出现在这里。这是可能的。如果有任何你需要的人请提前告诉我,谢谢。因此,一般来说,当我运行我的MVC3 c#应用程序时,我的登录表单出现在首先出现的同一页上,这是我的布局页面。我的控制器有以下代码:如何将LoginForm移动到另一个地方

namespace TestProject.Controllers 
{ 
    public class ViewDeveloperController : Controller 
    { 
     public ActionResult Index() 
     { 
      using (var db = new GameZoneEntities5()) 
      { 
       return View(db.tblDevelopers.ToList()); 
      } 
     } 

    } 
} 

我不知道这是否会有所帮助,如果还有其他问题请询问。

+0

我们需要视图代码,而不是控制器。 – 2012-02-20 03:45:03

回答

1

为此使用子操作。一个儿童行动基本上就像一个正常的行动,除了它返回一个PartialView而不是一个View,你可以把它看作是一个页面的可重用部分,其背后有一些逻辑。然后,您只需通过RenderActionHTML帮助程序方法让布局页面呈现子操作即可。

所以,你的代码可能是这个样子

public class AccountController 
{ 
    public ActionResult LogOn() 
    { 
     return PartialView(); 
    } 
} 

而且你_Layout.cshtml将只需要有下面的代码来呈现在你希望你的登录控制出现的地方的孩子动作。

@{ Html.RenderAction("LogOn", "Account" }); } 

您的LogOn视图剃须刀代码只会看起来像正常。

一旦你有这样的工作,这将是很容易做出一些改进,比如具有LogOn儿童行动显示LogOut视图如果用户已经登录,或使用JQuery有登录表单POST通过AJAX结果使UI更好。

+0

局部视图public class去哪里?什么是返回?从返回函数谢谢 – user1137472 2012-04-09 02:35:11

+0

PartialView实际上是一个内置于Controller类中的方法(您的控制器将从其继承) - 它的作用基本与'return View();'相同(也是控制器的一种方法)但是当你想将某些东西仅仅作为页面的一部分而不是整个页面来使用时,你就可以使用它。 – StanK 2012-04-16 00:34:40

相关问题