武安市网站建设费用,如何快速备案网站,平台建设内容,jpress和wordpress哪个好本应该继续数据库访问的问题进行探讨#xff0c;前文确实比较LOW。但本人认为#xff1a;初学者需要解决的是快速了解知识路线的问题#xff0c;所谓“生存问题”#xff0c;所以#xff0c;干脆把流程先走完。
一、页面生成
下面这张图在前面已经介绍过#xff1a; 前…本应该继续数据库访问的问题进行探讨前文确实比较LOW。但本人认为初学者需要解决的是快速了解知识路线的问题所谓“生存问题”所以干脆把流程先走完。
一、页面生成
下面这张图在前面已经介绍过 前文其实已经 “初步” 解决了数据库读写操作了可理解为 C 到 M 的双向通道已经完成剩下的问题是
1、页面生成控制器根据用户访问需求、数据库内容动态生成页面C --- V 的
2、页面的数据传送到控制器 V ---- C)
页面生成包括两大部分
1、数据传递控制器数据怎么到页面同时数据类型的生存期也应该注意
2、页面元素的动态生成框架一般都是固定的但内容应该是动态生成
控制器到页面数据可以通过 ViewBag ViewData 、TempData等”动态“容器来实现容器表明数据很多动态意味着数据的类型并非固定的而是动态的依据约定进行 ”装卸“ 即可。 在asp.net mvc程序设计中传递数据常常会用到viewdata、viewbag、tempdata这3个对象都可以用来传递数据但他们在细节中有很多的不同之处。 ViewDataViewData是一个字典集合通过key值读取对应的value使用方法ViewData[myname]张三 ViewBagViewBag是动态类型作用和ViewData一样都是用来存储信息有一些不同的是ViewData是object类型ViewBag是动态类型从运行效率上来讲ViewBag高于ViewData。在实际开发中通不只用其中一种。使用方法ViewBag.data张三 TempData跨请求数据传递它的机制类似于Session对象不同的页面之间可以传递参数但TempData只保存上一次的数据当页面再次刷新数据消失。使用方法TempData[myname]张三 以上摘抄自网络。因为不重要直接用 ViewBag 来的简单
使用范例续上文例 Index Action中添加 页面也进行修改 运行结果 代码就不贴了就几行很简单就完成数据传递ViewBag 里塞进去在 CSHTML文件里用Razor 的语法来完成动态生成页面。 二、改进代码
为了简单先在控制器下添加一个类该类就是对表user的描述以下是HomeController.cs的代码
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestWeb.Models;namespace TestWeb.Controllers
{public class HomeController : Controller{//// GET: /Home/public ActionResult Index(){DataSet set TestMysql.Query(select * from user);ListTestUser list new ListTestUser();foreach (DataRow row in set.Tables[0].Rows){TestUser tmp new TestUser(row[name].ToString(), row[psw].ToString(), int.Parse(row[age].ToString()));list.Add(tmp);}ViewBag.stu_list list;return View();}}public class TestUser{public string name; //公用才能在页面上调用面向对象封装思想public string psw;public int age;public TestUser(string _name, string _psw, int _age){name _name;psw _psw;age _age;}}
}视图类进行修改Index.cshtml
{ListTestWeb.Controllers.TestUser list ViewBag.stu_list;
}
tablethead //表头trth姓名/thth密码/thth年龄/th/tr/theadforeach (TestWeb.Controllers.TestUser item in list) //C#遍历集合{ trtditem.name/tdtditem.psw/tdtditem.age/td/tr}/table先看结果 这里不仅仅是由简单数据到对象到对象集合的传递问题还涉及到两个重要问题页面动态生成以及数据类型的作用范围
重要结论页面是在控制器或者说是服务端生成的也就是所谓的 ViewBag 的数据并非已传送到客户端 浏览器 从ViewBag里 ”拆“ 出来的数据仍然在服务器上使用。——可以简单地理解为使用 拆出来的数据还是在服务器上使用作用是用来 ”辅助“ 服务器生成所需要的 页面。页面都是html css js 等动态嵌入数据和元素很麻烦那么用 Razor 语法来实现吧
页面是控制器用 Razor 动态生成数据类型作用范围仅限于服务端客户端仅仅能够执行的代码是JS肯定不是C#。
问题
数据是否需要到客户端去通过JS使用呢——当然要比如echarts 画图就要用到数据这个问题在后面再探讨。
PS
1、echarts 画图 能不能 在服务端完成当然不行那是一个JS 在浏览器上运行的
2、js能不能使用 List、类等数据类型当然不行难道浏览器上装一个C#的代码编译器