Core Mvc传值Query、Form、Cookies、Session、TempData、Cache
1.传值方法
使用Request的方法(1-3):
1)Query:获取链接?后面的值
如:http://localhost:55842/Home/About?name=kxy
public IActionResult About()
{//-------------------------Request--------------------------------
string name = Request.Query["name"];//获取连接 ?name=kxy
return Content(name);
}
结果:页面显示kxy
也可以直接在方法中写入name参数
public IActionResult About(string name)
{
return Content(name);
}
结果一样
使用Model传值,首先定义一个Test类
public class Test
{
public string name { get; set; }
public int age { get; set; }
}
调用函数如下:
public IActionResult About(Test model)
{
string json = string.Format("{0}{1}", model.name, model.age);
return Content(json);
}
url=http://localhost:55842/Home/About?name=kxy&age=1 这里的参数名称要与Model的属性名称一样
结果:kxy1
2)Form:获取表单Post的值
string name = Request.Form["name"];
表单传值还可以通过方法的参数
[HttpPost]
public IActionResult About(string user,string pwd)
{
return Content($"用户{user} 密码{pwd}");
}
这里可以用@Html语句添加控件,参数第一个为name,第二个为value(name,value)
<form action="About" method="post">
用户:@Html.TextBox("user")
密码:@Html.Password("pwd")
<button type="submit">登陆</button>
</form>
3)Cookies:本地保存的值
string name1 = Request.Cookies["name"];
使用HttpContext的方法(4):
4)Session:服务器保存的值
using System.Diagnostics;using Microsoft.AspNetCore.Mvc;
using CoreMvc.Models;
using Microsoft.AspNetCore.Http;namespace CoreMvc.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
} public IActionResult About()
{//-------------------------HttpContext----------------------------
//--------------------------Session-------------------------------
//需要HttpContext需要引用using Microsoft.AspNetCore.Http;
HttpContext.Session.SetString("name", "kxy");
string name = HttpContext.Session.GetString("name");
HttpContext.Session.Remove("name"); HttpContext.Session.SetInt32("age", );
int? age = HttpContext.Session.GetInt32("age"); return Content(name);
}
}
}
而且,需要修改Startup.cs
ConfigureServices方法注入(也就是添加)
services.AddSession();
Configure方法添加(告诉Asp.net Core使用内存存储Session数据)
app.UseSession();
5)TempData
一个控制器定义了该数据,在所有视图均可以访问,但是只能访问一次,之后就会被清空,只能通过再次赋值才可以再次访问
如:
某个控制器定义了TempData["Name"]=“kxy”
在所有视图中均可以访问这个数据,然后数据就会被清空
6)Cache
cache是应用级别的,也就是说不同浏览器可以互相访问
我们举个例子
声明一个_cache,并写一个构造函数来实例化这个_cache
private readonly IMemoryCache _cache;
public TestController(IMemoryCache cache)
{
_cache = cache;
}
在About方法中定义_cache的内容
public IActionResult About()
{
_cache.Set("Name", "kxy");
_cache.Set("Sex", "男");
_cache.Set("Age", );
return View();
}
并在Index方法中利用ViewBag进行前后端数据交互
ViewBag.Name = _cache.Get("Name");
ViewBag.Sex = _cache.Get("Sex");
ViewBag.Age = _cache.Get("Age");
这样在Index视图中我们就可以看到Cache的内容,而且,不同浏览器记录的是一样的内容
在cache取值的时候,取到的都是一个object类型
所以如果要赋给一个强类型变量,就必须转换 或者 声明取得的值的类型,方法如下
string Name = (string)_cache.Get("Name");
string Name = _cache.Get<string>("Name");
三种数据传递方式的对比
Core Mvc传值Query、Form、Cookies、Session、TempData、Cache的更多相关文章
- Core Mvc传值ViewData、ViewBag和return view(model)
先定义一个Model类Student namespace Lession.Models { public class Student { public string Name { get; set; ...
- Http url MVC Request Query Form 传参专贴
一.工具区 [参考]postman中 form-data.x-www-form-urlencoded.raw.binary的区别--转 二..net MVC 三..net WebForm 四.Java ...
- Asp.Net Core MVC传值 Asp.Net Core API 前台写法
$("#Add_User").click(function () { var obj = { //"属性名": 传递的值, "User_Name&qu ...
- asp.net Core MVC + form validation + ajax form 笔记
asp.net Core MVC 有特别处理form,controller可以自己处理model的验证,最大的优势是写form时可以少写代码 先了解tag helper ,这东西就是element上的 ...
- ASP.NET Core 2 学习笔记(十一)Cookies & Session
基本上HTTP是没有记录状态的协定,但可以通过Cookies将Request来源区分出来,并将部分数据暂存于Cookies及Session,是写网站常用的用户数据暂存方式.本篇将介绍如何在ASP.NE ...
- django form组件 cookies,session
django form组件 渲染标签 就是组件里面的字段在前端展示叫做渲染标签 校验数据 用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...
- ASP.NET Core MVC – Form Tag Helpers
ASP.NET Core Tag Helpers系列目录 ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Helpers ...
- ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门
一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MV ...
- Asp.Net Core MVC控制器和视图之间传值
一.Core MVC中控制器和视图之间传值方式和Asp.Net中非常类似 1.弱类型数据:ViewData,ViewBag 2.强类型数据:@model 二.代码 实例 1.ViewData pub ...
随机推荐
- TODO monkey笔记,PC端执行和手机端执行
微博不给力啊 吞我笔记,还好我有txt... 1.环境准备:安装Android sdk, 配置环境变量:platfrom_tools,tools,aapt;java:2.查询当前apk信息: aapt ...
- HTML学习笔记Day14
一.移动端页面布局 1.移动端的屏幕尺寸 移动端屏幕尺寸:屏幕对角线的长度,单位是英寸(1英寸=2.45厘米): 常见的尺寸有:2.4,2.8,3.5,3.7,4.2,5.0,5.5,6.0 2.屏幕 ...
- CRT和EXCRT学习笔记
蒟蒻maomao终于学会\(CRT\)啦!发一篇博客纪念一下(还有防止忘掉) \(CRT\)要解决的是这样一个问题: \[x≡a_1(mod m_1)\] \[x≡a_2(mod m_2)\] ...
- 配置taBar所遇见的问题(踩坑之路)
目前效果图: 问题:我遇见一个问题,点击每周关注的时候,他应该跳转到哪一个页面.在没有设置taBar还是可以跳转的. 解决方法是: 修改 open-type='navigate'为switchTab( ...
- angular 中如果表单有相同的name一般会出现如下错误
Unhandled Promise rejection Cannot assign to a reference or variable
- 创建免密码sudo用户
创建免密码sudo用户 #!/bin/bash c1=`grep -w 'bkuser' /etc/passwd | wc -l` ]; then echo "bkuser已经存在" ...
- REST_返回形式
摘录: "Web resources" were first defined on the World Wide Web as documents or files identif ...
- Linux虚拟内存(swap)调优篇-“swappiness”,“vm.dirty_background_ratio”和“vm.dirty_ratio”
Linux虚拟内存(swap)调优篇-“swappiness”,“vm.dirty_background_ratio”和“vm.dirty_ratio” 作者:尹正杰 版权声明:原创作品,谢绝转载 ...
- Hadoop问题:There are 0 datanode(s) running and no node(s) are excluded in this operation.
问题描述: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /tmp/hadoop-yarn/staging/hado ...
- 1.单件模式(Singleton Pattern)
创建型模式---单件模式(Singleton Pattern)动机(Motivation): 在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性. ...