小白入门C#编写MVC登录小案例

一、C#编写MVC登录小案例

🚀1. 新建MVC项目。

在这里插入图片描述

🚀2. 在Models文件夹下创建一个User类,包含登录所需要的用户名和密码属性。

namespace MvcLogin.Models
{
    public class User
    {
        public string UserName
        {
            get; set;
        }
        public string Password
        {
            get;set;
        }
    }
}

🚀3. 在Controllers文件夹内,创建LoginController类,并添加Index、Success和Login的Action。

using Microsoft.AspNetCore.Mvc;
using MvcLogin.Controllers;

namespace MvcLogin.Controllers
{
    public class LoginController : Controller 
    {
        //GET:Login
        public ActionResult Index()
        {
            return View();
        }
        /*MVC将自动查找与视图名称相同的.cshtml文件*/
        public IActionResult Success()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Login(Models.User user)
        {
            if(user.UserName == "admin" && user.Password == "admin")
            {
                return RedirectToAction("Success", "Login"); 
                //RedirectToAction 方法是用于将请求重定向到指定的控制器和动作方法的 URL,而不是直接指向到视图文件的路径。
            }
            else
            {
                ModelState.AddModelError("", "用户名或密码错误!");
                return View("Index");
            }
        }
    }
}


🚨🚨🚨对上述代码的解释:

🚨(1)在C#MVC开发中的Controllers文件的IActionResult是什么意思呢? 什么时候要创建这个呢?
  • 🍦①、在C#MVC开发中的Controllers文件中,IActionResult是一个接口,用于定义返回结果类型,它表示控制器方法的返回类型。 通过实现IActionResult接口,可以在控制器方法中返回不同类型的结果,如View、Json、File等。
  • 🍦②、通常,当我们需要在控制器方法中返回视图、重定向到另一个站点或执行其他操作时,将使用IActionResult 接口。在代码中创建IActionResult主要根据需要来决定,一般情况下,只要需要将结果返回给视图或输出结果给用户时才会使用。
  • 🍦③、MVC将自动查找与视图名称相同的.cshtml文件
public IActionResult Success()
{
    return View();
}
  • 🍦④、在这里,View() 方法会返回Views/Login/Success.cshtml视图文件。如果需要返回其他的视图文件,可以通过传入文件名或文件路径的方式进行指定。如下所示:
// 返回名称为 "Hello" 的视图文件
return View("Hello");

// 返回路径为 "Views/Home/MyView.cshtml" 的视图文件
return View("~/Views/Home/MyView.cshtml");

🚨(2)IActionResult 接口实现了以下类型:

  • ViewResult: 表示一个视图结果。
  • ContentResult: 表示一个文本数据结果。
  • EmptyResult: 不需要返回任何结果。
  • RedirectResult: 表示一个重定向结果。
public IActionResult Index()
{
    return Redirect("https://www.example.com");
}
  • 在上面的示例中,我们在控制器中定义了一个Index方法,当用户调用该方法时,它会自动将用户重定向到"https://www.example.com" URL 。如果我们想要重定向到另一个控制器方法,可以使用Url.Action()方法来构造URL。例如:
public IActionResult Index()
{
    return Redirect(Url.Action("About", "Home"));
}
  • 在上面的示例中,我们使用Url.Action()方法构造了一个URL,它将用户重定向到Home控制器中的About方法。请注意,Url.Action()方法中的参数是控制器中的方法名称和控制器名称。

🚨(3)ModelState的使用

  • 它用于验证用户输入的数据并将错误信息存储在ModelState对象中。
  • AddModelError()方法是ModelState对象中的一个方法,它用于向ModelState中添加错误信息,以便在将其传递给View时显示错误。


🚀4. 在Views文件夹内,创建Login文件夹,并在该文件夹中添加Index和Success的View文件

  • Index文件视图:
@model MvcLogin.Models.User

<form asp-action="Login" method="post">
    <div asp-validation-summary="ModelOnly" class="text-danger"></div>
    <div class="form-group">
        <label asp-for="UserName" class="control-label"></label>
        <input asp-for="UserName" class="form-control" />
        <span asp-validation-for="UserName" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="Password" class="control-label"></label>
        <input asp-for="Password" class="form-control" />
        <span asp-validation-for="Password" class="text-danger"></span>
    </div>
    <div class="form-group">
        <input type="submit" value="登录" class="btn btn-primary" />
    </div>
</form>
  • Success文件视图:
<h2>Login</h2>

<p>登录成功!</p>

🚀5. 进行模拟登录

  • 通过localhost:端口号/Login进行浏览器访问。
    在这里插入图片描述
  • 登录失败页面
    在这里插入图片描述
  • 登录成功页面
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

unity01 界面布局

布局 坐标系 遵循左手定则&#xff0c;中指是y轴、食指是x轴、大拇指是z轴。 可以理解为x轴代表东西方向&#xff0c;z轴代表南北方向&#xff0c;y轴代表上下方向。 常用快捷键 鼠标中键&#xff1a;移动地图 右键&#xff1a;移动视角 shift鼠标左键单击gimo导航器的小方…

【C++】设计模式-单例模式

目录 一、单例模式 单例模式的三个要点 针对上述三要点的解决方案 常用的两类单例模式 二、懒汉模式实现 1.基本实现 2.锁静态成员析构单例 3.双层检查锁定优化 4.双层检查锁定智能指针 三、饿汉模式实现 1.基础实现 2.嵌套内部类解决内存泄漏 3.智能指针解决内存泄…

linux 系统修改已经打好jar包的yml配置文件

工作中可能回遇到&#xff0c;jar包已经打好&#xff0c;并且文件已经上传了&#xff0c;但是突然发现配置文件中的某一个参数写错了&#xff0c;怎么办&#xff1f;重新打包&#xff1f;如果重新打包再上传的话太影响效率了。那么我们可以通过以下方法&#xff0c;修改已经上传…

SuperMap iServer新增支持FlatGeobuf数据格式,查询渲染性能提升2-3倍

导语 FlatGeobuf是一种地理数据存储格式&#xff0c;采用了二进制编码&#xff0c;相比其他文本或XML格式更高效&#xff0c;可以显著减小文件大小&#xff0c;这使得数据的传输和存储更加快速和高效。 SuperMap iServer 11i(2023) &#xff08;以下简称SuperMap iServer11.1&a…

Pandas Groupby:在Python中汇总、聚合和分组数据

GroupBy是一个非常简单的概念。我们可以创建一个类别分组&#xff0c;并对这些类别应用一个函数。这是一个简单的概念&#xff0c;但它是一种在数据科学中广泛使用的非常有价值的技术。在真实的的数据科学项目中&#xff0c;您将处理大量数据并一遍又一遍地尝试&#xff0c;因此…

elementUI el-radio 无法点击的问题

<el-form-item label"B端客户类型" prop"user_type"><template slot"label"><span>B端客户类型</span><el-tooltip effect"dark" placement"top" content"B端大客户账期有效,只有设置该类型…

【Go】实现一个代理Kerberos环境部分组件控制台的Web服务

实现一个代理Kerberos环境部分组件控制台的Web服务 背景安全措施引入的问题SSO单点登录 过程整体设计路由反向代理登录会话组件代理YarnHbase 结果 背景 首先要说明下我们目前有部分集群的环境使用的是HDP-3.1.5.0的大数据集群&#xff0c;除了集成了一些自定义的服务以外&…

寻找下一个生成式 AI 独角兽,亚马逊云科技创业加速器火热招募中!

生成式AI让人工智能技术又一次破圈&#xff0c;带来了机器学习被大规模采用的历史转折点。它正在掀起新一轮的科技革命&#xff0c;为人类带来前所未有的颠覆性的影响&#xff0c;而诸多创业者也应势而上&#xff0c;寻求创新机遇。生成式AI可以创造全新的客户体验、提高企业内…

fastapi初使用,构建自己的api

文章目录 1、安装2、api实现2.1、 app.get("/1")2.2、app.get("/{a}")2.3、app.get("/{a}{b}")2.4、函数和api分离 3、运行 原文链接&#xff1a;https://wangguo.site/posts/d98bb3c9.html fastapi 是一个基于 Python 的 API 构建框架&#xff…

044、TiDB特性_PlacementPolicy

Placement Rules in SQL之前 跨地域部署的集群&#xff0c;无法本地访问无法根据业务隔离资源难以按照业务登记配置资源和副本数 Placement Rules in SQL之后 跨地域部署的集群&#xff0c;支持本地访问根据业务隔离资源按照业务等级配置资源和副本数 配置 labels 设置 Ti…

Windows Cluster 分布式算法

在分布式系统中&#xff0c;都需要解决分布式一致性问题。那么&#xff0c;在Windows 集群中&#xff0c;使用了什么算法来保证集群的一致性呢——Paxos。Windows Server 故障转移集群 (WSFC) 使用 Paxos 算法在整个系统中同步更改。通过记录 Paxos Tag 值并保留历史记录&#…

vue 如何发布并部署到服务器

一般情况npm run build即可 从而生成vue代码直接放到服务器即可 这里的具体情况要看package.json里面的配置从而使用命令 会生成dist就是该项目的发布包

Inno Setup打包winform、wpf程序可判断VC++和.net环境

Inno Setup打包winform、wpf程序可判断VC和.net环境 1、下载Inno Setup2、新建打包文件、开始打包1、新建打包文件2、填写 应用名称、版本号、公司名称、公司官网3、选择安装路径 Custom是指定默认路径、Program Files folder是默认C盘根目录4、选择程序启动exe文件 以及Addfol…

Ubuntu下安装、配置及重装CUDA教程

安装CUDA 前往Nvidia CUDA Tools官网选择对应的架构和版本下载CUDA 以如下架构和版本为例&#xff1a; 查看显卡驱动 nvidia-smi如果显卡驱动已经装了&#xff0c;那么在CUDA安装过程中不用再勾选安装driver 下载并安装CUDA wget https://developer.download.nvidia.co…

ETHERCAT转ETHERCAT网关西门子为什么不支持ethercat两个ETHERCAT设备互联

1.1 产品功能 远创智控YC-ECT-ECT是自主研发的一款ETHERCAT从站功能的通讯网关。该产品主要功能是将2个ETHERCAT网络连接起来。 本网关连接到ETHERCAT总线中做为从站使用。 1.2 技术参数 1.2.1 远创智控YC-ECT-ECT技术参数 ● 网关做为ETHERCAT网络的从站&#xff0c;可以连接…

HTML5学习简记

目录 HTML定义 标签 HTML基本骨架 常见标签 标题标签 段落标签 换行与水平线标签 文本格式化标签 图像标签 绝对路径与相对路径 超链接标签 音频与视频标签 列表标签 无序列表 有序列表 定义列表 表格标签 表格结构标签 合并单元格 表单标签 input标签 input标签占…

CSS---CSS面试题

目录 1.盒模型 2.offsetHeight /clientheight/scrollHeight 3.left与offsetLeft 4.对BFC规范的理解 5.解决元素浮动导致的父元素高度塌陷的问题 6.CSS样式的先级 7.隐藏页面元素 8.display: none 与 visibility: hidden 的区别 9.页面引入样式时&#xff0c;使用link与import有…

GO 语言GC

目录 写屏障 读屏障 GO语言GC准备 堆内存结构: GC内存分配: GC触发&#xff1a; P的作用: 写屏障 实现强弱三色不式,为了避免误删,则实现写屏障. 写屏障是在写操作中插入指令,目的是把数据对象的修改通知到GC GO语言支持两种写屏障 读屏障 非移动垃圾回收(例如 三色)天…

文件共享服务器

文章目录 一、共享服务器概述二、创建共享三、访问共享四、创建隐藏的共享五、访问隐藏共享的方法六、共享相关命令七、屏蔽系统隐藏共享自动产生1. 打开注册表2. 定位共享注册表位置 八、查看本地网络连接状态&#xff08;查看开放端口&#xff09;九、关闭445服务 一、共享服…

java线上故障排查套路总结

线上故障主要会包括cpu、磁盘、内存以及网络问题&#xff0c;而大多数故障可能会包含不止一个层面的问题&#xff0c;所以进行排查时候尽量四个方面依次排查一遍。同时例如jstack、jmap等工具也是不囿于一个方面的问题的&#xff0c;基本上出问题就是df、free、top 三连&#x…