.NET MVC第四章、模型绑定获取表单数据

简介: .NET MVC第四章、模型绑定获取表单数据

模型绑定概述

模型绑定就是将浏览器发送的HTTP请求数据转换为.NET对象的过程。


模型绑定使得在控制器中可以直接获取视图、或URL传递来的数据,且这些数据可以自动转换为模型对象,以便调用。


模型绑定机制省略了常见Request.QueryString手动传值和类型转换的步骤,这样可以专注地处理模型对象。


获取值demo

获取方法1、参数获取


获取方法2、Request.QueryString["userName"]


控制器

public ActionResult Index(string pwd)
{
    ViewBag.userName = Request.QueryString["userName"];
    ViewBag.pwd = pwd;
    return View();
}

视图层


<h2>表单传值</h2>
<hr />
<form action="~/Test/Index" method="get">
    <p>账号<input type="text" name="userName" placeholder="请输入账号" /></p>
    <p>密码<input type="password" name="pwd" placeholder="请输入密码" /></p>
    <p><input type="submit" value="提交" class="btn btn-block btn-primary" /></p>
</form>
<hr />
@ViewBag.userName
<br />
@ViewBag.pwd

效果:

image.png



模型获取值

在Models下创建User.cs作为模型

image.png



创建Users对象


image.png


控制器


public ActionResult Index(Users users)
{
    ViewBag.userName = users.userName;
    ViewBag.pwd = users.pwd;
    return View();
}

视图层不变。


效果:

image.png



共计尝试了三种获取值的方法,还有一种获取文件的方法。


文件获取,必须使用post接收

控制器


[HttpPost]
public ActionResult GetImg(HttpPostedFileBase file)
{
    string fileName = file.FileName;
    ViewBag.fileName = "上传文件的名称:"+fileName;
    // 保存到测试目录
    file.SaveAs("D:\\"+fileName);
    return Redirect("~/Test/Index");
}

视图层


表单提交图片,必须是post提交,并且添加enctype="multipart/form-data"上传图片

<h2>获取图片</h2>
<hr />
<form action="~/Test/GetImg" method="post" enctype="multipart/form-data">
    <p><input type="file" name="file"/></p>
    <p><input type="submit" value="提交" class="btn btn-block btn-primary" /></p>
</form>

上传图片

image.png



D盘查看文件:

image.png



可空int参数

在“ Index(string gname, int? gid)”方法的参数声明中,gid参数需要设定为int?类型,这种类型称为“可空 int类型”。 当文本框输入的内容包含“非int类型”或“空数据”时,模型绑定器将无法正确实现int类型转换,默认的绑定随之失效。为避免出现这类异常,需要为控制器的相关参数设定“可空类型”或“参数默认值”。


控制器


public ActionResult Index(string userName,int? age=2)
{
    ViewBag.userName = userName;
    ViewBag.age = age;
    return View();
}

视图层


<h2>int?</h2>
<hr />
<form action="~/Test/Index" method="get">
    <p><input type="text" name="userName" placeholder="请输入用户名" /></p>
    <p><input type="text" name="age" placeholder="请输入用年龄" /></p>
    <p><input type="submit" value="提交" class="btn btn-block btn-primary" /></p>
</form>
<hr />
@ViewBag.userName
<br />
@ViewBag.age

未传参效果:

image.png



传参效果


image.png


文件上传

控制器


[HttpPost]
public ActionResult GetImg(HttpPostedFileBase file)
{
    //文件名
    string fileName = file.FileName;
    //文件后缀需要引入using System.IO;
    string Ext = Path.GetExtension(fileName);
    //获取服务路径
    string serverPath = Server.MapPath("/");
    //生成随机不重复图片名称UUID
    string uuid = System.Guid.NewGuid().ToString("N");
    //拼接保存位置
    string saveUrl=serverPath + uuid + Ext;
    // 保存到测试目录
    file.SaveAs(saveUrl);
    TempData["saveUrl"] = uuid+Ext;
    return Redirect("~/Test/Index");
}


视图层


<h2>获取图片</h2>
<hr />
<form action="~/Test/GetImg" method="post" enctype="multipart/form-data">
    <p><input type="file" name="file"/></p>
    <p><input type="submit" value="提交" class="btn btn-block btn-primary" /></p>
</form>
<hr/>
显示图片路径:
@TempData["saveUrl"]
<hr/>
<img src="~/@TempData["saveUrl"]" width="500"/>

效果:

image.png



保存位置

image.png



图片这里必须要会,很重要。

相关文章
|
6月前
|
存储 设计模式 前端开发
QTChart实现柱状图的mvc模型
QTChart实现柱状图的mvc模型
87 1
|
11天前
|
机器学习/深度学习 编解码 并行计算
SegNetr来啦 | 超越UNeXit/U-Net/U-Net++/SegNet,精度更高模型更小的UNet家族
SegNetr来啦 | 超越UNeXit/U-Net/U-Net++/SegNet,精度更高模型更小的UNet家族
26 0
|
25天前
|
SQL 开发框架 .NET
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
ASP.NET WEB+EntityFramework数据持久化——考核练习库——1、用户管理系统(考点:查询列表、增加、删除)
56 0
|
2月前
|
前端开发
.net core mvc获取IP地址和IP所在地(其实是百度的)
.net core mvc获取IP地址和IP所在地(其实是百度的)
91 0
|
2月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
24 0
|
3月前
|
设计模式 JSON 前端开发
Spring MVC 详解(连接、获取参数、返回数据)
Spring MVC 详解(连接、获取参数、返回数据)
|
3月前
|
算法 数据库 计算机视觉
【计算机视觉】FCN、Seg-Net、U-Net模型进行图像分割实战(附源码和数据集 超详细必看)
【计算机视觉】FCN、Seg-Net、U-Net模型进行图像分割实战(附源码和数据集 超详细必看)
45 1
|
3月前
|
前端开发 JavaScript Java
让你了解什么是spring MVC模型数据(附大量代码)
让你了解什么是spring MVC模型数据(附大量代码)
40 0
|
3月前
|
Oracle 关系型数据库 数据管理
.NET医院检验系统LIS源码,使用了oracle数据库,保证数据的隔离和安全性
LIS系统实现了实验室人力资源管理、标本管理、日常事务管理、网络管理、检验数据管理(采集、传输、处理、输出、发布)、报表管理过程的自动化,使实验室的操作人员和管理者从繁杂的手工劳作中解放出来,提高了检验人员的工作效率和效益,降低了劳动成本和差错发生率。
|
4月前
|
开发框架 前端开发 API
私有化部署大模型:5个.Net开源项目
私有化部署大模型:5个.Net开源项目
51 0

热门文章

最新文章

相关产品

  • 云迁移中心