12 messaggi dal 27 giugno 2015
Nella mia master page ho una navbar bootstrap che contiene il loginstatus per permettere di uscire dalla sessione ma ho qualche problema quando cerco di visualizzare la home del mio progetto.
Mi restituisce l'errore:

Il controllo 'HeadLoginView_LoginStatus1' di tipo 'LoginStatus' deve essere inserito in un tag Form con runat=server.

sembra chiarissimo, ma un'altra pagina del mio progetto viene visualizzata correttamente.

Posto la mia master.page

<%@ Master Language="C#" AutoEventWireup="true" %>

<html>
<head runat="server">
    <title></title>

<!-- CSS Files -->
<link href="Content/bootstrap.min.css" rel="stylesheet" />
<link href="Content/bootstrap-theme.min.css" rel="stylesheet" />
<link href="Content/bootstrap-datetimepicker.min.css" rel="stylesheet" />
<link href="Font/css/font-awesome.css" rel="stylesheet" />
<link href="style.css" rel="stylesheet" />



</head> 
<body> 
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="Home.aspx"><i class="fa fa-cubes" aria-hidden="true"></i>Servizio</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="annuale.aspx">Servizio Annuale</a></li>
          </ul>
          <ul class="nav navbar-nav navbar-right">        
 <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false" >
                <AnonymousTemplate>
                     <li><a href="~/Login.aspx" ID="HeadLoginStatus" runat="server"><i class="fa fa-sign-in" aria-hidden="true"></i> Accedi</a></li> 
                </AnonymousTemplate>
                <LoggedInTemplate>
                    <li> <asp:LoginStatus ID="LoginStatus1" runat="server" LogoutText="<i class='fa fa-sign-in' aria-hidden='true'></i> Esci" /></li> 
                </LoggedInTemplate>
</asp:LoginView>        
     
            
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>
    <asp:ContentPlaceHolder ID="CPH1" runat="server">
    </asp:ContentPlaceHolder>
 
<!-- js Files -->
<script src="scripts/jquery.blockUI.js"></script>
<script src="scripts/bootstrap.min.js"></script>
<script src="scripts/moment.min.js"></script>
<script src="scripts/moment-with-locales.min.js"></script>
<script src="scripts/jquery-1.9.1.min.js"></script>
<script src="scripts/bootstrap-datetimepicker.min.js"></script>
<script type="text/javascript">
    function WebForm_OnSubmit() {
        if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
            for (var i in Page_Validators) {
                try {
                    var control = document.getElementById(Page_Validators[i].controltovalidate);
                    if (!Page_Validators[i].isvalid) {
                        control.className = "form-control has-error";
                    } else {
                        control.className = "form-control";
                    }
                } catch (e) { }
            }
            return false;
        }
        return true;
    }

    $(document).ready(function () {
        var url = window.location;
        $('.navbar .nav').find('.active').removeClass('active');
        $('.navbar .nav li a').each(function () {
            if (this.href == url) {
                $(this).parent().addClass('active');
            }
        });
    });
     
</script>
        
</body>
</html>
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao,


Il controllo 'HeadLoginView_LoginStatus1' di tipo 'LoginStatus' deve essere inserito in un tag Form con runat=server.
sembra chiarissimo, ma un'altra pagina del mio progetto viene visualizzata correttamente.


Non so quale sia il problema nell'altra pagina ma il testo dell'errore dice chiaramente che il controllo LoginStatus deve trovarsi all'interno di un tag <form runat="server">.

Dato che in una pagina ASP.NET ci può essere solo un <form runat="server">, puoi valutare una di queste due soluzioni:
  • Spostare il form nella master page, in modo che abbracci anche il LoginStatus. Questo ti obbligherà a rimuvoere ogni altro form che si trovi nelle pagine di contenuto.
  • Rinunciare al controllo LoginStatus e fare il suo lavoro "a mano", cioè usando un blocco if in cui vai a leggere il valore di Request.User.Identity.IsAuthenticated per capire se l'utente è loggato o meno.


ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.