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. R语言绘图(FZ)

    P-Value Central Lmit Theorem(CLT) mean(null>diff) hist(null) qqnorm(null) qqline(null) pops<-r ...

  2. angularjs的一些问题

    1.如果页面报不支持写法的错,请查看是否引用了跨js定义的常量.逐步排错. 2.后台返回json要导入如下依赖: <dependency> <groupId>net.sf.js ...

  3. Mac 软件专题:教学参考工具软件-外语/医学/天文/地理/数学等

    今天和大家分享mac软件专题:教学参考工具软件,在这个专题中,主要向大家推荐一些Mac上优秀的教育教学.知识参考类的软件,包含外语.医学.天文.地址.数学.音乐等方面,学生.老师以及相关的工作者不要错 ...

  4. python3.x 和pip3的安装

    python3.x 和pip3的安装 本人在学习python3的时候,视频中使用的是python3,在讲解到有些第三方库的时候,无法使用到pip3 install来安装所需的库.由于系统是centos ...

  5. CodeFirst+MySql开发

    CodeFirst+MySql开发简单入门 记录一下使用Mysql进行EF Codefirst方式开发的简单过程. 0.准备工作 安装MySql,mysql-connector-net,mysql-f ...

  6. 谈谈关于PHP连接数据库的两种方法(PDO&Mysqli)

    前言:在我们之前学习sql语句的时候都是停留在黑窗口的,怎样才能让mysql与程序代码发生联系呢?此时PDO和Mysqli应运而生,为了解决这个问题 (一)开启其中(pdo或者mysqli)的php扩 ...

  7. Problems found loading plugins: Plugin "GlassFish Integration" was not loaded: required plugin "Java EE: EJB, JPA, Servlets" is disabled.

    idea启动报错:并且无法部署web项目 Problems found loading plugins: Plugin "GlassFish Integration" was no ...

  8. ssm的架构及整合说明

    SSM,即 SpringMVC.Spring 与 MyBatis 三个框架 它们在三层架构中所处的位置是不同的,即它们在三层架构中的功能各不相同,各司其职 SpringMVC:作为 View 层的实现 ...

  9. 队列 Queue 与 生产者消费模型

    队列:先进先出 # from multiprocessing import Queue # Q = Queue(4) # Q.put('a') # Q.put('b') # Q.put('b') # ...

  10. cxf与spring的整合

    cxf与spring的整合: 一:服务端相关配置(配置好后启动tomocat就自动发布了接口,浏览器打开验证下) 1:导入cxf以及spring的相关jar包; 2:在web.xml中增加配置: 代码 ...