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. struts2 对EL的改变

    Struts2对EL的改变 1.Struts2中使用EL的问题: 前提: 我们应该知道,如果我们没有往值栈(根)中放入数据的话,那么我们的动作类默认是在值栈的栈顶 2.关于EL问题的分析: 分析:   ...

  2. struts2 contextMap

    一.contextMap中的数据操作 root根:List 元素1 元素2 元素3 元素4 元素5 contextMap:Map key value application Map key value ...

  3. fiddler接口测试,js代码修改日志展示(埋点用)

    fiddler 通过fiddler 发送接口信息: http://blog.csdn.net/java2013liu/article/details/53380381 rules--automatic ...

  4. hystrix项目实战

    闲话少说: 总共分6步: (1)添加hystrix依赖以及监控的依赖 <dependency> <groupId>org.springframework.cloud</g ...

  5. 跨域、curl、snoopy、file_get_contents()

    定义:可以称为”信息采集/模拟登录”技术,可以实现对某个地址做请求,同时按照要求传递get或post参数. curl本身是php的一个扩展,同时也是一个利用URL语法规定来传输文件和数据的工具,支持很 ...

  6. 如何解决串session:

    在IE快捷方式上点击鼠标右键>属性>快捷方式>目标:"C:\Program Files\Internet Explorer\iexplore.exe" -nome ...

  7. 数据库中in和exists关键字的区别

    数据库中in和exists关键字的区别 in 是把外表和内表作hash join,而exists是对外表作loop,每次loop再对内表进行查询. 一直以来认为exists比in效率高的说法是不准确的 ...

  8. Nginx记录-nginx 负载均衡5种配置方式(转载)

    nginx 负载均衡5种配置方式 1.轮询(默认)   每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除.  2.weight 指定轮询几率,weight和访问比率成 ...

  9. BFC规范

    BFC规范 BFC规范是什么? BFC规范也叫块级格式化上下文.是指一个独立的容器. 如何触发BFC? 我们可以通过一下几种方式触发BFC 1.通过浮动触发:float(除none) 2.通过绝对\固 ...

  10. Freemarker中的日期输出

    <p> ${scheme.createTime?string("yyyy年MM月dd日 HH:mm:ss")}</p>