ASP.NET使用ViewBag和HttpPost在MVC中进行自定义类的数据传递Demo

第一步创建一个实体类Product

在这里插入图片描述

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{
    public class Product
    {
        public string PName { get; set; }
        public int PNum { get; set; }
    }
}

第二步创建一个空的控制器

在这里插入图片描述

在这里插入图片描述

该控制器的代码为

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebApplication1.Models;

namespace WebApplication1.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost] //这里如果不标记会报错的
        public ActionResult Index(Product p)
        {
        //这里用的实体类接收
            ViewBag.ProductInfo = $"您选择了名称为{p.PName},数量为{p.PNum}";
            return View();
        }
    }
}

第三步 右键添加视图

在这里插入图片描述

在这里插入图片描述

第四步 Index页面



@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div> 
      @*action的路径要写对,       method为post*@
        <form action="/Home/Index" method="post">
                             @*name的名字必须与实体类的属性相同*@
            <div>名称:<input type="text" name="PName" /> </div>
            <div>数量:<input type="text" name="PNum" /> </div>
            <input type="submit" value="提交" />
            @*接收的参数*@
            <h1>@ViewBag.ProductInfo</h1>
        </form>

    </div>
</body>
</html>

效果图

在这里插入图片描述

在这里插入图片描述

### 关于C# MVC框架的示例项目 C# 中的 MVC(Model-View-Controller)模式是一种广泛应用于 Web 应用程序开发的设计模式。它通过将应用程序划分为模型(Model)、视图(View)控制器(Controller)三个核心组件,提高了代码的可维护性可扩展性[^2]。 #### 示例项目的结构概述 一个典型的 C# MVC 项目通常包括以下几个部分: 1. **模型 (Model)** 模型表示数据及其逻辑处理的部分。它是业务层的核心,负责管理数据并与数据库交互。例如,定义实体类并配置 ORM 工具(如 Entity Framework)。 2. **视图 (View)** 视图是用户界面的一部分,负责展示数据给用户。在 ASP.NET Core 或传统的 ASP.NET MVC 中,视图通常是 Razor 文件 (.cshtml),支持嵌入 C# 代码以动态生成 HTML 页面。 3. **控制器 (Controller)** 控制器充当模型视图之间的桥梁,接收用户的输入请求,并调用相应的模型方法来更新或查询数据,最后返回适当的数据到视图进行渲染。 --- #### 示例项目下载与创建方式 如果需要获取现成的 C# MVC 示例项目,可以通过以下几种途径获得: 1. **Microsoft 官方文档中的示例** Microsoft 提供了许多官方教程示例项目,可以直接从 GitHub 上克隆下来学习。例如,ASP.NET Core 的官方仓库提供了多个完整的示例项目: ```bash git clone https://github.com/dotnet/AspNetCore.Docs.git ``` 这些示例涵盖了登录功能、CRUD 操作以及其他常见场景[^4]。 2. **在线资源网站** 许多开发者社区也提供免费的开源项目。可以在 NuGet Gallery 或 CodeProject 等平台上找到适合的学习材料。这些项目可能已经实现了诸如注册、登录等功能模块。 3. **手动创建简单示例** 如果希望快速搭建自己的示例项目,可以按照以下步骤操作: - 创建一个新的 ASP.NET Core Web Application 项目。 ```powershell dotnet new mvc -n MyMvcApp cd MyMvcApp ``` - 添加必要的依赖项,比如 Entity Framework Core 其他工具包。 ```xml <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.*" /> ``` - 配置 `Startup.cs` 或者新的 .NET 6+ 版本下的 `Program.cs` 来启用路由服务注入机制。 - 编写基本的功能模块,例如用户认证流程。确保遵循最佳实践,如将登录页面放置在指定目录下,并调整默认路径设置。 --- #### 示例代码片段 下面是一个简单的控制器视图配合使用的例子: ##### 登录控制器 (`Controllers/LoginController.cs`) ```csharp using Microsoft.AspNetCore.Mvc; namespace MyMvcApp.Controllers { public class LoginController : Controller { [HttpGet] public IActionResult Index() { return View(); } [HttpPost] public IActionResult Authenticate(string username, string password) { if (!string.IsNullOrEmpty(username) && !string.IsNullOrEmpty(password)) { // 假设验证成功 return RedirectToAction("Index", "Home"); } else { ViewBag.ErrorMessage = "Invalid credentials."; return View(); } } } } ``` ##### 登录视图 (`Views/Login/Index.cshtml`) ```html @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Login</title> </head> <body> @if(ViewBag.ErrorMessage != null){ <p style="color:red;">@ViewBag.ErrorMessage</p> } <form method="post"> Username: <input type="text" name="username"/><br/> Password: <input type="password" name="password"/><br/> <button type="submit">Login</button> </form> </body> </html> ``` 上述代码展示了如何实现一个基础的登录表单提交过程,并进行了简单的错误提示显示。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值