前后台相互传值的方法概述
2019独角兽企业重金招聘Python工程师标准>>>
前台向后传值:
1.用网站网址自带参数向后传【http://localhost:5809/ProductInfo/CatogryProducts?categoryID=0021】,后台controller用string ID = Request.QueryString["categoryID"]接收,其中categoryID是参数名称。
2.ajax传值,其中$.post(url,data,success(data, textStatus, jqXHR),dataType)
参数 描述
url 必需。规定把请求发送到哪个 URL。
data 可选。映射或字符串值。规定连同请求发送到服务器的数据。
success(data, textStatus, jqXHR) 可选。请求成功时执行的回调函数。
dataType 可选。规定预期的服务器响应的数据类型。默认执行智能判断(xml、json、script 或 html)。
该函数是简写的 Ajax 函数,等价于:
$.ajax({
type: 'POST',
url: url,
data: data,
success: success,
dataType: dataType
});
$.get()也差不多。百度
3.表单传值,表单元素的name属性必须和后台model类型一样,直接用一个对象接收。在form的action属性中引用controller的方法就可以
ViewData | ViewBag |
它是Key/Value字典集合 | 它是dynamic类型对像 |
从Asp.net MVC 1 就有了 | ASP.NET MVC3 才有 |
基于Asp.net 3.5 framework | 基于Asp.net 4.0与.net framework |
ViewData比ViewBag快 | ViewBag比ViewData慢 |
在ViewPage中查询数据时需要转换合适的类型 | 在ViewPage中查询数据时不需要类型转换 |
有一些类型转换代码 | 可读性更好 |
4.viewdata传值
控制器向视图中传值ViewData详解
1.将一个字符串传值到视图中
在action中我们将字符串保存在ViewData(或ViewBag [asp.net 3或以上才可用])中代码如下:
public ActionResult Index()
{
ViewData["str1"]= "这是一个字符串";
//也可以使用ViewBag来传递值
ViewBag.str2="这是另外一个字符串";
return View();
}
在视图中我们可以用下面代码将字符串显示出来
<h1>@ViewData["str1"]</h1>
<h1>@ViewBag.str2</h1>
2.将一个字符串集合传递到视图中
public ActionResult Index()
{
List<string> str1= new List<string>();
str1.Add("1111");
str1.Add("2222");
str1.Add("3333");
ViewData["str"] = str1;
return View();
}
在视图中我们通过下面语句将str1的值显示出来
@foreach (var a in ViewData["str"] as List<string>)
{
@a
}
3.将一个datatable的值传递到视图中
public ActionResult Index()
{
DataTable newtable = new DataTable("d");
newtable.Columns.Add("商品编号", typeof(string));
newtable.Columns.Add("客户编号", typeof(string));
DataRow NewRow = newtable.NewRow();
NewRow["商品编号"] = "132323213434";
NewRow["客户编号"] = "344223443244";
newtable.Rows.Add(NewRow);
DataRow SNewRow = newtable.NewRow();
SNewRow["商品编号"] = "343432445456";
SNewRow["客户编号"] = "454523432453";
newtable.Rows.Add(SNewRow);
ViewData["dt"]= newtable;
return View();
}
在视图中我们通过下面语句将dt的值显示出来
注意:在顶部要先加上:@using System.Data;
<ul>
@foreach(DataRow dr in (ViewData["dt"] as DataTable).Rows)
{
<li>
@dr["商品编号"],@dr["客户编号"],
</li>
}
</ul>
然后是ViewBag:
public ActionResult UsingViewBag() {ViewBag.Title = " Using ViewBag";ViewBag.ProjectName = "My Test Project";ViewBag.ProjectDescription = "This is Test Project to demo Viewdata and viewbag details";ViewBag.StartDate = new DateTime(2011, 1, 1);ViewBag.TotalPrice = 1000;ViewBag.TotalDays = 100;Dictionary<string, string> stackholder = new Dictionary<string, string>();stackholder.Add("Client", "Mr. Client");stackholder.Add("Manager", "Mr. Joy");stackholder.Add("Team Leader", "Mr.Toy");stackholder.Add("Sr. developer", "Mr.dojoy");stackholder.Add("developer", "Mr. nodoy");ViewBag.stackholder = stackholder;List<string> modules = new List<string>();modules.Add("Admin module");modules.Add("ShoppingCart module");modules.Add("CMS module");ViewBag.modules = modules;return View(); }
对应View UsingViewBag 的cshtml的ViewBag:
<h1>@ViewBag.Title</h1><div><div><h2>Project Name : @ViewBag.ProjectName</h2></div><div>ProjectDescription : <p>"@ViewBag.ProjectDescription.</p></div><div>Stack Holder :<br /><ul id="stakholder">@foreach ( var stakerholder in ViewBag.stackholder ){ <li>@stakerholder.Key : @stakerholder.Value</li>}</ul></div><div>Project Details:<br /><div>module List :<ul id="modulelist">@foreach ( var module in ViewBag.modules ){ <li>@module</li>}</ul></div>Project StartDate : @ViewBag.StartDate.ToString("dd-MMM-yyyy") <br />Project TotalPrice: @ViewBag.TotalPrice ₹ <br />Project TotaDays : @ViewBag.TotalDays </div></div>
在controll用ViewBag传一个 List<ProductInfo> list的列表中:
public ActionResult Index()
{
List<ProductInfo> list = new List<ProductInfo>();
list.Add(new ProductInfo
{
Department = "1111aa",
Describe = "1111aa",
Brand = "1111aa",
CategoryID = "1111aa",
ProductID = "1111aa",
Color = "1111aa",
Cost = "1111aa",
Note = "1111aa",
Owner = "1111aa",
PriceTag = "1111aa",
ProductName = "98uy",
ShelfLife = "1111aa",
Size = "1111aa",
Style = "1111aa",
});
ViewBag.list = list;
return View();
}
在前台中:
@foreach(var item in ViewBag.list){
@item.ProductName;
@item.Department;
}
转载于:https://my.oschina.net/u/3522874/blog/1204445
前后台相互传值的方法概述相关推荐
- Android中WebView加载本地Html,与JavaScript与Android方法相互传值...
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51759125 最近在做项目中,要使用High ...
- Android中WebView加载本地Html,与JavaScript与Android方法相互传值(续)...
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010046908/article/details/51809558 接着上篇Android中Web ...
- Java05-day05【方法(概述、调用过程图解)、带参方法、带返回值方法、重载、方法参数传递(基本类型、引用类型)】
java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] &qu ...
- 使用Spring Security3的四种方法概述
使用Spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过, ...
- vue 父子组件传值以及方法调用,平行组件之间传值以及方法调用大全
vue项目经常需要组件间的传值以及方法调用,具体场景就不说了,都知道.基本上所有的传值都可以用vuex状态管理来实现,只要在组件内监听vuex就好. vue常用的传值方式以及方法有: 1. 父值传子( ...
- 微信小程序四种父子相互传值方式
微信小程序四种父子相互传值方式 1. 绑定自定义属性(父传子),触发自定义方法 (子传父) 原生微信小程序+uni-app都可以实现 父组件: <template><view cla ...
- 高光谱解混:基于几何,统计,稀疏回归的方法概述
高光谱解混方法概述 问题引入 问题何来? 基础知识 核心任务 基础方法 线性与非线性模型 线性混合模型 非线性混合模型 非线性方法的概述 高光谱解混流程 大气校正(Atmospheric Correc ...
- java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。
java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...
- 地理建模方法概述02
文章目录 第4节 地理建模方法概述 地理建模中常用的数学方法 一.数据分析法 (一)探索性数据分析 (二)数据分析的地理建模实例 二.机理分析法 (一)结构分析法 (二)功能分析法 (三)过程分析法 ...
最新文章
- 【自然语言处理】hmm隐马尔可夫模型进行中文分词 代码
- spring基于注解程序开发
- Mapper 接口无法注入或Invalid bound statement (not found)
- Web前端开发——BAT面试题汇总及答案03
- /usr/include/stdio.h:27:10: fatal error: bits/libc-header-start.h: No such file or directory 报错解决
- Java中什么时候throws_何时在Java方法声明中使用throws?
- Keras中的两种模型:Sequential和Model
- c 语言程序设计(清华大学郑莉),清华大学 C++程序设计语言 45 郑莉 视频教程
- Android模拟地图gps定位
- qq音乐 android,QQ音乐安卓版
- 条码仓库管理系统在食品行业中的应用
- IDEA设置版权信息
- Docker三剑客详解
- 用聊天记录当证据 对方改了微信号怎么证明他是他
- 正则表达式regex(入门使用)
- arch配置之百度网盘
- Skleran-线性模型-普通最小二乘法-LinearRegression
- kubelet启动pod源码分析(三)
- 基于LSTM实现股票预测
- 早期 计算机网络只是包括,计算机网络-判断题.docx