如何使用 ascx 或其他等价物?

Posted

技术标签:

【中文标题】如何使用 ascx 或其他等价物?【英文标题】:How to use ascx, or another equivalent? 【发布时间】:2011-12-22 18:19:03 【问题描述】:

如何在我的 asp.net mvc 2.0 项目的每个页面中插入登录视图? 我从 MS Visual Studio 2010 的非空项目“偷”了这个控制器和视图。如何在每个视图上插入登录表单? 我需要在 php 中使用这样的东西:include。什么是 asp.net mvc? ascx??? 这是 main.master:

    <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>
        <asp:ContentPlaceHolder ID="TitleContent" runat="server" />
    </title>
    <asp:ContentPlaceHolder ID="HeadContent" runat="server" />
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <div class="header">
        <img src="/Content/image/img_06.jpg"   /></div>
    <div class="naviheader">
        <div class="navl">
        </div>
        <a href="/Home" class="navitext">На главную</a> <a href="/Shedule" class="navitext">
            Расписание</a> <a href="/Home/About" class="navitext">О нас</a> <a href="/Admin"
                class="navitext">АдминПанель</a>
    </div>
    <div id="middle">
        <div id="container">
            <div id="content">
                <asp:ContentPlaceHolder ID="MainContent" runat="server">
                </asp:ContentPlaceHolder>
            </div>
            <!-- #content-->
        </div>
        <!-- #container-->
        <div class="sidebar" id="sideLeft">
            <asp:ContentPlaceHolder ID="Login" runat="server">
                <% Html.RenderPartial("Login"); %>
            </asp:ContentPlaceHolder>
        </div>
</body>
</html>

我必须在哪里插入什么? 这是登录视图(aspx):

  <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Main.Master" Inherits="System.Web.Mvc.ViewPage<TrainShedule.Models.LogOnModel>" %>

<asp:Content ID="loginTitle" ContentPlaceHolderID="TitleContent" runat="server">
    Log On
</asp:Content>

<asp:Content ID="loginContent" ContentPlaceHolderID="MainContent" runat="server">
    <h2>Log On</h2>
    <p>
        Введите свой логин и пароль:
    </p>

    <% using (Html.BeginForm())  %>
        <%= Html.ValidationSummary(true, "Login was unsuccessful. Please correct the errors and try again.") %>
        <div>
            <fieldset>
                <legend>Ввод данных:</legend>

                <div class="editor-label">
                    <%= Html.LabelFor(m => m.UserName) %>
                </div>
                <div class="editor-field">
                    <%= Html.TextBoxFor(m => m.UserName) %>
                    <%= Html.ValidationMessageFor(m => m.UserName) %>
                </div>

                <div class="editor-label">
                    <%= Html.LabelFor(m => m.Password) %>
                </div>
                <div class="editor-field">
                    <%= Html.PasswordFor(m => m.Password) %>
                    <%= Html.ValidationMessageFor(m => m.Password) %>
                </div>

                <div class="editor-label">
                    <%= Html.CheckBoxFor(m => m.RememberMe) %>
                    <%= Html.LabelFor(m => m.RememberMe) %>
                </div>

                <p>
                    <input type="submit" value="Log On" />
                </p>
            </fieldset>
        </div>
    <%  %>
</asp:Content>

【问题讨论】:

【参考方案1】:

首先,您需要将登录视图页面 (aspx) 更改为用户控制 (ascx)。这应该不会太难。通过一些调整复制和粘贴应该可以做到。

一旦您拥有控制权,您就可以将其添加到您的母版页,它将出现在所有使用该母版页的页面上。有两种方法可以将控件添加到页面中。

    将 UserControl 拖到设计器图面上

    Html.RenderUserControl

以下链接将有很大帮助。 asp.net mvc usercontrols start to finish.

【讨论】:

【参考方案2】:

使用部分视图(如 .ascx)并使用布局(如母版页)。

【讨论】:

以上是关于如何使用 ascx 或其他等价物?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UserControl (.ascx) 中调用 ASP.NET WebMethod

如何在.aspx文件上使用Javascript检查超时值后调用.ascx的按钮单击事件

如何从 aspx 中的 Gridview 行中检索主键以在 userControl.ascx 中使用?

如何在asp.net用户控件(ascx)中插入activex

如何在 Jquery 中找到用户控件的第二个子项? [关闭]

如何将 System.Data.DataSetExtensions 的引用添加到网站 ascx.cs 文件?