2014-04-24 122 views
1

我想在ASP.NET MVC 5中創建用戶控件。控件名稱是LoginUserControl.ascx並保存在視圖下的共享文件夾中。我試圖在_Layout.cshtml中調用用戶控件,但它給出了錯誤?請建議正確的方法來做到這一點。在ASP.NET MVC中的用戶控件5

.ASCX代碼:

<%@ Control Language="C#" 
    AutoEventWireup="true" 
    CodeBehind="LoginUserWebControl.ascx.cs" 
    Inherits="TestApp.Views.Shared.LoginUserWebControl" %> 

<% 
    if (Request.IsAuthenticated) { 
%> 
     Welcome <b><%: Page.User.Identity.Name %></b>! 
     @Html.ActionLink("Log Off", "LogOff", "Account") 
<% 
    } 
    else { 
%> 
     @Html.ActionLink("Log On", "LogOn", "Account") 
<% 
    } 
%> 

添加在Layout.cshtml

<div class="navbar-collapse collapse"> 
    <ul class="nav navbar-nav"> 
     <li>@Html.ActionLink("Home", "Index", "Home")</li> 
     <li>@Html.ActionLink("About", "About", "Home")</li> 
     <li>@Html.ActionLink("Contact", "Contact", "Home")</li> 
     <li>@Html.Partial("LoginUserWebControl")</li>     
    </ul> 

錯誤:

The view at '~/Views/Shared/LoginUserWebControl.ascx' must derive from ViewPage, ViewPage, ViewUserControl, or ViewUserControl. Blockquote

+4

混合Webforms控件和MVC是一個壞主意。 –

+6

你真正想要的是創建PartialView,而不是用戶控件。 –

+0

我會嘗試使用PartialView。謝謝 –

回答

0

你LoginUserWebControl.ascx.cs必須從派生ViewUser像這樣的控制:

partial class LoginUserWebControl : System.Web.Mvc.ViewUserControl 
{ 
    ... 
}