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的更多相关文章

  1. Core Mvc传值ViewData、ViewBag和return view(model)

    先定义一个Model类Student namespace Lession.Models { public class Student { public string Name { get; set; ...

  2. Http url MVC Request Query Form 传参专贴

    一.工具区 [参考]postman中 form-data.x-www-form-urlencoded.raw.binary的区别--转 二..net MVC 三..net WebForm 四.Java ...

  3. Asp.Net Core MVC传值 Asp.Net Core API 前台写法

    $("#Add_User").click(function () { var obj = { //"属性名": 传递的值, "User_Name&qu ...

  4. asp.net Core MVC + form validation + ajax form 笔记

    asp.net Core MVC 有特别处理form,controller可以自己处理model的验证,最大的优势是写form时可以少写代码 先了解tag helper ,这东西就是element上的 ...

  5. ASP.NET Core 2 学习笔记(十一)Cookies & Session

    基本上HTTP是没有记录状态的协定,但可以通过Cookies将Request来源区分出来,并将部分数据暂存于Cookies及Session,是写网站常用的用户数据暂存方式.本篇将介绍如何在ASP.NE ...

  6. django form组件 cookies,session

    django form组件 渲染标签  就是组件里面的字段在前端展示叫做渲染标签 校验数据  用户输入的数据提交给后端组件叫做校验数据 forms组件中定义的字段都是必须传值的(required=Tr ...

  7. 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 ...

  8. ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门

    一.前言 1.本教程主要内容 ASP.NET Core MVC 视图引擎(Razor)简介 ASP.NET Core MVC 视图(Razor)ViewData使用示例 ASP.NET Core MV ...

  9. Asp.Net Core MVC控制器和视图之间传值

    一.Core MVC中控制器和视图之间传值方式和Asp.Net中非常类似 1.弱类型数据:ViewData,ViewBag 2.强类型数据:@model 二.代码 实例  1.ViewData pub ...

随机推荐

  1. java键盘中输入q退出

    用 java.util.Scanner 如下 public static void main(String[] args) { while(true){ Scanner scan = new Scan ...

  2. mongodb安装和运行

    转载来源:https://blog.csdn.net/IT_wanghe/article/details/53884229 参考教程:http://www.runoob.com/mongodb/mon ...

  3. (逆序对 分治法)P1908 逆序对 洛谷

    题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计.最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定 ...

  4. TensorFlow入门学习(让机器/算法帮助我们作出选择)

    catalogue . 个人理解 . 基本使用 . MNIST(multiclass classification)入门 . 深入MNIST . 卷积神经网络:CIFAR- 数据集分类 . 单词的向量 ...

  5. HDFS 概述

    定义 HDFS(Hadoop Distributed File System)是分布式文件管理系统中的一种,用来管理多台机器上的文件,通过目录树来定位文件. 由很多服务器联合起来实现其功能,集群中的服 ...

  6. 16.观察者模式(Observer Pattern)

    动机(Motivate):     在软件构建 过程中,我们需要为某些对象建立一种“通知依赖关系” --------一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知.如果这 ...

  7. nginx做rails项目web服务器缓存配置方法

    nginx作为Web服务器.或反向代理服务器都可以使用缓存 一.作为Web服务器 nginx可以通过 expires 指令来设置响应头的过期时间,实现浏览器缓存(Browser Caching),即浏 ...

  8. ibatis项目启动报错The string "--" is not permitted within comments【原】

    该错误主要就是因为xml中<!-- [注释]--> 注释与-->之间没有空格造成xml解析错误 sqlMapConfig.xml内容如下 <?xml version=" ...

  9. bzoj千题计划308:bzoj4589: Hard Nim(倍增FWT+生成函数)

    https://www.lydsy.com/JudgeOnline/problem.php?id=4589 n*m*m 做法 dp[i][j] 前i堆石子,异或和为j的方案数 第一重循环可以矩阵快速幂 ...

  10. c++后台开发路线