如何使用 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