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. tensor flow中summary用法总结

    对于用法的总结详细的参见博文https://www.cnblogs.com/lyc-seu/p/8647792.html

  2. WPF界面+halcon生成的C#文件

    1.新建WPF应用程序完成后,解决方案资源管理器——引用处右键,添加引用如下两个dll 工具箱,空白处右键,选择项(只添加halcondotnet.dll,位置同上).这样halcon平台的控件就添加 ...

  3. opencv源码学习: getStructuringElement函数;

    getStructuringElement函数归属于形态学,可以建立指定大小.形状的结构: 原型: /** @brief Returns a structuring element of the sp ...

  4. qml: 以鼠标为中心进行放缩;

    import QtQuick 2.9 import QtQuick.Window 2.2 import QtQuick.Controls 2.2 Window { visible: true widt ...

  5. 【强大的视频编辑工具】Adobe Premiere Pro CC 2019 for Mac

    [简介] PR CC是视频编辑爱好者和专业人士必不可少的视频编辑工具.它可以提升您的创作能力和创作自由度,它是易学.高效.精确的视频剪辑软件.PR CC提供了采集.剪辑.调色.美化音频.字幕添加.输出 ...

  6. linux对4T硬盘进行分区

    使用parted工具: yum install parted parted /dev/sdb //选择硬盘 GNUParted 2.3Using /dev/sdbWelcome to GNU Part ...

  7. MyBatis-CURD

    一.接口方法 /** * 删除.修改.添加操作都可以返回三种类型 * Integer.Long.Boolean */ public interface MyUserMapper { public My ...

  8. Linux学习笔记:【000】Linux系统入门

    什么是Linux? Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口 Portable Operating System Interface of UN ...

  9. springboot打包成war,部署到tomcat无法访问的问题

    如题:实在是太坑.平时本地测试觉得很方便,但是到了项目打包发布掉链子了. 如很多帖子一样: 首先springboot内嵌的tomcat,再依赖servlet-api,修改启动类继承SpringBoot ...

  10. spingBoot整合mybatis+generator+pageHelper

    spingBoot整合mybatis+generator+pageHelper 环境/版本一览: 开发工具:Intellij IDEA 2018.1.4 springboot: 2.0.4.RELEA ...