webform如何升级mvc

news2024/10/2 10:37:50

1.创建项目

在这里插入图片描述
给项目起名字然后指定存储位置
在这里插入图片描述
选择asp.net 空项目
在这里插入图片描述

2.新建model

namespace WebFormToMvc
{
    /// <summary>
    /// 用户模型
    /// </summary>
    public class UserModel
    {
        /// <summary>
        /// id
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 姓名
        /// </summary>
        public string Name { get; set; }
    }
}

3.新建Service,模拟数据库调用

using System.Collections.Generic;

namespace WebFormToMvc
{
    public class Services
    {
        /// <summary>
        /// 获取全部的用户
        /// </summary>
        /// <returns></returns>
        public List<UserModel> GetAllUsers()
        {
            //模拟数据库查询
            List<UserModel> res = new List<UserModel>();
            for (int i = 0; i < 10; i++)
            {
                res.Add(new UserModel() { Id = i + 1, Name = "小明" + i });
            }
            return res;
        }
    }
}

4.新建aspx页面

新建index.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="WebFormToMvc.index" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:Repeater runat="server" ID="rpt1">
            <ItemTemplate>
                <div>id:<%#Eval("Id") %></div>
                <div>姓名:<%#Eval("Name") %></div>
            </ItemTemplate>
        </asp:Repeater>
    </form>
</body>
</html>

index.aspx.cs

using System;

namespace WebFormToMvc
{
    public partial class index : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            this.rpt1.DataSource = new Services().GetAllUsers();
            this.rpt1.DataBind();
        }
    }
}

在这里插入图片描述

5.配置mvc

5.1 安装nuget包

Microsoft.AspNet.Mvc
Microsoft.AspNet.Mvc.zh-Hans
Microsoft.AspNet.Web.Optimization
Microsoft.AspNet.Razor
在这里插入图片描述

5.2 新增全局程序类

在这里插入图片描述

5.3 创建App_Start和Controllers以及Views文件夹

App_Start下新建RouteConfig

using System.Web.Mvc;
using System.Web.Routing;

namespace WebFormToMvc.App_Start
{
    public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
            url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}

Controllers下新建HomeController

using System.Web.Mvc;

namespace WebFormToMvc.Controllers
{
    public class HomeController : Controller
    {
        /// <summary>
        /// 首页
        /// </summary>
        /// <returns></returns>
        public ActionResult Index()
        {
            var users = new Services().GetAllUsers();
            return View(users);
        }
    }
}

Views下新建web.config
引入mvc控制器

<?xml version="1.0"?>

<configuration>
	<configSections>
		<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
			<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
			<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
		</sectionGroup>
	</configSections>

	<system.web.webPages.razor>
		<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
		<pages pageBaseType="System.Web.Mvc.WebViewPage">
			<namespaces>
				<add namespace="System.Web.Mvc" />
				<add namespace="System.Web.Mvc.Ajax" />
				<add namespace="System.Web.Mvc.Html" />
				<add namespace="System.Web.Optimization"/>
				<add namespace="System.Web.Routing" />
			</namespaces>
		</pages>
	</system.web.webPages.razor>

	<appSettings>
		<add key="webpages:Enabled" value="false" />
	</appSettings>

	<system.webServer>
		<handlers>
			<remove name="BlockViewHandler"/>
			<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
		</handlers>
	</system.webServer>

	<system.web>
		<compilation>
			<assemblies>
				<add assembly="System.Web.Mvc, Version=5.2.9.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
			</assemblies>
		</compilation>
	</system.web>
</configuration>

Views下新建Home/Index.cshtml

@model List<WebFormToMvc.UserModel>
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>首页</title>
</head>
<body>
    <div>
        @foreach (var item in Model)
        {
            <div>id:@item.Id</div>
            <div>姓名:@item.Name</div>
        }
    </div>
</body>
</html>

修改Global.ashx

using System;
using System.Web.Mvc;
using System.Web.Routing;
using WebFormToMvc.App_Start;

namespace WebFormToMvc
{
    public class Global : System.Web.HttpApplication
    {
        /// <summary>
        /// 应用程序启动时触发
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Application_Start(object sender, EventArgs e)
        {
            AreaRegistration.RegisterAllAreas();
            //添加其他过滤器
            //FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //添加捆绑
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

在这里插入图片描述
实现了aspx转mvc,也能保证aspx和mvc项目的共存

参考1
参考2
参考3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/369856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Chrome浏览器内置翻译无法使用的问题

hosts文件 hosts是一个没有扩展名的系统文件&#xff0c;可以用记事本等工具打开&#xff0c;主要作用是定义IP地址和主机名的映射关系&#xff0c;是一个映射IP地址和主机名的规定。当用户在浏览器中输入一个需要登录的网址时&#xff0c;系统会首先自动从hosts文件中寻找对应…

上海亚商投顾:沪指收跌0.62% 东数西算板块逆势领涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。市场情绪三大指数今日震荡调整&#xff0c;盘中集体跌超1%&#xff0c;随后沪指跌幅有所收窄。东数西算概念午后走强&#xf…

【FLASH存储器系列二十一】如何评估固态硬盘的性能?

我们以三星消费级SSD 990 PRO为例进行介绍&#xff0c;下图为其产品配置&#xff1a; 简单说明一下产品配置&#xff1a;990 pro容量有1T和2T两种规格&#xff0c;固态硬盘容量计算一般是1T1000GB1000000MB&#xff0c;与操作系统容量计算1T1024GB不一样&#xff0c;使用M.2外形…

Editor工具开发基础三:自定义组件菜单拓展 CustomEditor

一.创建脚本路径 创建脚本路径不再限制 一般写在自定义组件类的下边二.特性CustomEditor 定义主设计图面由自定义代码实现数组的编辑器。两个构造函数1.public CustomEditor(Type inspectedType);2.public CustomEditor(Type inspectedType, bool editorForChildClasses);参数意…

[架构之路-118]-《软考-系统架构设计师》-软架构设计-11-可靠性相关设计

第11节 可靠性相关设计11.1 可靠性基本概念可靠性工程是研究产品生命周期中故障的发生、发展规律&#xff0c;达到预防故障&#xff0c;消灭故障&#xff0c;提高产品可用性的工程技术。信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力&#xff0c;可以…

如何理解「数据驱动业务」?

“数据驱动”描述了一种业务状态&#xff0c;在这种状态中&#xff0c;数据被用于实时有效地推动决策和其他相关活动。对于企业来说&#xff0c;达到数据驱动的状态就像是开车和骑马旅行的区别。数据驱动的业务能够更快、更高效地达到目标。 数据驱动特征包括质量良好的数据整…

高品质运动耳机哪款更好用、运动耳机最好的牌子推荐

在运动的时候大家都会选择戴上耳机&#xff0c;用音乐来”调味“&#xff0c;让跑步的过程不那么枯燥乏味。说到运动耳机&#xff0c;除了老生常谈的音质以外&#xff0c;耳机的材质、耳机的工艺&#xff0c;耳机的佩戴稳固性等&#xff0c;也都在影响着用户的体验&#xff0c;…

181、【动态规划】leetcode ——72. 编辑距离(C++版本)

题目描述 原题链接&#xff1a;72. 编辑距离 解题思路 动态规划五步曲&#xff1a; &#xff08;1&#xff09;dp[i][j]含义&#xff1a; 以word1[i - 1]和word2[j - 1]结尾子串&#xff0c;经过最少次增删改后&#xff0c;可让word1变为word2的步数。dp中的i对应word1中的i…

命令执行漏洞多种写入webshell方式总结

命令行写shell注意事项&#xff1a;1.注意单引号和双引号的区别&#xff1a;单引号用单引号 ’ 括起来的字符会保留引号内每个字符的字面值简而言之&#xff0c;shell 将逐字解释单引号内的封闭文本&#xff0c;并且不会插入任何内容&#xff0c;包括变量、反引号、某些 \ 转义…

内存管理框架---Slab(二)

站在Arnold Lu南京大佬的肩膀&#xff0c;俯瞰内存管理之slab 文章目录slab层的由来slab/slub/slobslab层的设计思想slab相关数据结构创建slab描述符分配slab对象释放slab对象销毁缓存在内核栈上的静态分配高端内存的映射永久映射临时映射每个CPU的分配新的每个CPU接口编译时的…

自动驾驶仿真测试介绍

作者 | 楼泽如 上海控安可信软件创新研究院研发工程师 来源 | 鉴源实验室 01 引 言 自动驾驶汽车的兴起&#xff0c;正在重新定义汽车行业。随着自动驾驶技术的发展&#xff0c;自动驾驶汽车将会大大提升交通安全、减少事故发生、减少交通拥堵、提高公路容量等等&#xff0…

我这样实现Promise

一、剖析Promise的基础框架 要实现Promise原理&#xff0c;肯定得先明白其原理。Promsie的基础框架如下&#xff1a; // 挂在原型上的方法&#xff0c;实例对象可以访问并且使用 MyPromise.prototype.then function(onResolved, onRejected) {//.then接收两个函数类型的形参…

Elasticsearch7.8.0版本进阶——文档分析 分析器

目录一、文档分析过程二、分析器三、内置分析器3.1、标准分析器3.2、简单分析器3.3、空格分析器3.4、语言分析器四、分析器使用场景五、分析器的测试示例一、文档分析过程 将一块文本分成适合于倒排索引的独立的词条。将这些词条统一化为标准格式以提高它们的“可搜索性”&…

RFID在产线上的作用

RFID在产线上的作用RFID技术应用于产线监控&#xff0c;可以实现产线的自动控制和检测。RFID读写器每识别一个产品标签&#xff0c;就可以将数据传输到电脑程序中&#xff0c;记录每1件产品的原料和来源、生产线位置、生产过程和库存状况等信息&#xff0c;为企业更好地管理生产…

实现基于国密SM3的密钥派生(KDF)功能

实现基于国密SM3的密钥派生&#xff08;KDF&#xff09;前言KDF 标准基于SM3的kdf实现前言 密钥派生函数&#xff08;KDF&#xff09;&#xff1a;密钥派生函数是指从一个共享的秘密比特串中派生密钥数据&#xff0c;在密钥协商过程中&#xff0c;密钥派生函数作用在密钥交换所…

davis2016评估教程

DAVIS 2016是VOS任务中的一个经典的benchmark&#xff0c;但是一些VOT的算法有时候也可以预测mask&#xff0c;所以也会在上面测一测性能&#xff0c;本次就随手记录一下自己评测的过程&#xff0c;有需要的小伙伴可以往下看。 DAVIS 2016数据集官方项目网站&#xff1a;https:…

【微信小程序】-- 常用的基础内容组件介绍 -- text rich-text progress icon(七)

&#x1f48c; 所属专栏&#xff1a;【微信小程序开发教程】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#…

获取Windows11开发环境及VirtualBox配置指南

今天我们来讲一讲Windows11开发环境的快速搭建&#xff0c;主要是通过Virtualbox虚拟机安装微软官方预先配置好的Windows11环境包&#xff0c;配置简单&#xff0c;开箱即用。 获取虚拟机打包镜像 微软官方提供了多个系统平台的Windows11虚拟机镜打包镜像&#xff0c;只需要导…

维格云社区版APItable

目录 ✨ 快速开始 🔥 功能特性 💥 应用场景 💞 面向 API 💝 嵌入友好 安装 🧑‍💻 贡献 开发环境 Git 工作流基础 工作约定

[零刻] SER5 Pro 迷你主机:从开箱到安装ESXi+虚拟机

开箱先上图&#xff1a; SER5Pro这个小主机采用了AMD580H的处理器&#xff0c;性能相当强悍&#xff0c;用来做All in one主机非常合适&#xff0c;特别是独有的背面散热系统&#xff0c;可以同时给内存和硬盘散热&#xff0c;在长期运行下散热完全不用担心稳定性&#xff0c;放…