此教程向你提供 ASP.NET MVC 视图简介, 视图数据, 和 HTML Helpers。教程最后,你应该会理解如何创建新视图,从控制器传递数据到视图,和使用 use HTML Helpers 在视图中生成内容。
理解视图
不像 ASP.NET 或者ASP, ASP.NET MVC 并不包括任何直接对应页面的东西。 在 ASP.NET MVC 应用程序中,硬盘上并不存在与你输入浏览器地址栏中的URL对应的页面。在ASP.NET MVC应用程序中与页面最接近的东西是称为视图的东西。
ASP.NET MVC 应用程序, 传入的浏览器请求被映射到控制器 actions。控制器 action 可能返回一个视图。然而,控制器可能执行其他类型的action,比如将你重定向到另一个控制器 action。
代码1 包含一个简单的名为 HomeController的控制器。 HomeController 暴露了2个控制器 actions 名为 Index() 和 Details()。
代码1 – HomeController.cs
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Details()
{
......
此教程向你提供 ASP.NET MVC 视图简介, 视图数据, 和 HTML Helpers。教程最后,你应该会理解如何创建新视图,从控制器传递数据到视图,和使用 use HTML Helpers 在视图中生成内容。
理解视图
不像 ASP.NET 或者ASP, ASP.NET MVC 并不包括任何直接对应页面的东西。 在 ASP.NET MVC 应用程序中,硬盘上并不存在与你输入浏览器地址栏中的URL对应的页面。在ASP.NET MVC应用程序中与页面最接近的东西是称为视图的东西。
ASP.NET MVC 应用程序, 传入的浏览器请求被映射到控制器 actions。控制器 action 可能返回一个视图。然而,控制器可能执行其他类型的action,比如将你重定向到另一个控制器 action。
代码1 包含一个简单的名为 HomeController的控制器。 HomeController 暴露了2个控制器 actions 名为 Index() 和 Details()。
代码1 – HomeController.cs
using System.Web.Mvc;
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult Details()
{
......
刚开始很不习惯c#的风格,哎,先入为主啊,delphi习惯了,{}代替begin/end太扎眼。
属性方法的宣告和代码在一起,没有像delphi分interface/implementation,感觉太乱,都不知道一个class到底有几个方法。
每个属性和方法前面都要单独写private/protected/public,老天,c#是delphi之父设计的揶,怎么不学delphi写一个就行呢?绝对降低生产率。
c#号称没有全局变量、全局函数了,有人大家赞赏,说可以减少耦合,刚很好奇,看了才明白,老天,都放到class里面去了,那这个class算不算全局的??类似delphi的class method,不需要创建instance就可以调用。
跟c一样,函数调用,即使没有参数,也要加一对括号,烦,有时候不知道某个东西是属性还是方法,VS的code insight选择方法后也不自动加上一对括号,像ToString(),我总是忘掉。
没有了单元的概念,不存在一个cs文件引用另一个cs文件的用法,在project中的文件就可以互相使用里面的class。
assembly中没有如delphi的单元initialization/finalization初始化功能,很不方便,只能通过static property来lazy创建。
form有controls属性,列出第一层控件,与delphi一样;但是没有components属性,不知道如何列出那些不可视� ......
刚开始很不习惯c#的风格,哎,先入为主啊,delphi习惯了,{}代替begin/end太扎眼。
属性方法的宣告和代码在一起,没有像delphi分interface/implementation,感觉太乱,都不知道一个class到底有几个方法。
每个属性和方法前面都要单独写private/protected/public,老天,c#是delphi之父设计的揶,怎么不学delphi写一个就行呢?绝对降低生产率。
c#号称没有全局变量、全局函数了,有人大家赞赏,说可以减少耦合,刚很好奇,看了才明白,老天,都放到class里面去了,那这个class算不算全局的??类似delphi的class method,不需要创建instance就可以调用。
跟c一样,函数调用,即使没有参数,也要加一对括号,烦,有时候不知道某个东西是属性还是方法,VS的code insight选择方法后也不自动加上一对括号,像ToString(),我总是忘掉。
没有了单元的概念,不存在一个cs文件引用另一个cs文件的用法,在project中的文件就可以互相使用里面的class。
assembly中没有如delphi的单元initialization/finalization初始化功能,很不方便,只能通过static property来lazy创建。
form有controls属性,列出第一层控件,与delphi一样;但是没有components属性,不知道如何列出那些不可视� ......
C#代码与javaScript函数的相互调用
问:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:1、函数声明为public
后台代码(把public改成protected也可以)
public string ss()
{
return("a");
}
2、在html里用<%=fucntion()%>可以调用
前台脚本
<script language=javascript>
var a = "<%=ss()%>";
alert(a);
</script>
方法三:1、<script language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
thefrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</script>
<input id="Button1" t ......
C#代码与javaScript函数的相互调用
问:
1.如何在JavaScript访问C#函数?
2.如何在JavaScript访问C#变量?
3.如何在C#中访问JavaScript的已有变量?
4.如何在C#中访问JavaScript函数?
问题1答案如下:
javaScript函数中执行C#代码中的函数:
方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
2、在前台写一个js函数,内容为document.getElementById("btn1").click();
3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
方法二:1、函数声明为public
后台代码(把public改成protected也可以)
public string ss()
{
return("a");
}
2、在html里用<%=fucntion()%>可以调用
前台脚本
<script language=javascript>
var a = "<%=ss()%>";
alert(a);
</script>
方法三:1、<script language="javascript">
<!--
function __doPostBack(eventTarget, eventArgument)
{
var theForm = document.Form1; //指runat=server的form
theForm.__EVENTTARGET.value = eventTarget;
thefrom.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
-->
</script>
<input id="Button1" t ......
我们都知道java、c#、vb等语言都有sleep暂停的函数,而JavaScript脚本没有类似的功能。
下面就是我的实现的方法:
<mce:script type="text/javascript"><!--
function test()
{
var s="javascript--暂停函数";
setTimeout(
function(){
eval(sleep(test)); //执行return之后的代码,也就是“alert(s);”
},
2000
); //两秒后执行
return; //运行到这就退出
alert(s);
}
function sleep(func)
{
if (func == null)
{
return ;
}
var reg= /[\n\r]/g;
var funcStr = func.toString().replace(reg,''); //替换回车和换行符
reg = /.+?sleep.+?return;/;
funcStr = '{' + funcStr.replace(reg,''); //去掉函数test,return之前的代码
return funcStr;
}
test();
// --></mce:script>
这个可能有一些局限性,无法像java、C#中的sleep函数那样直观,好用。
但我觉得还蛮有趣的,就拿出来跟大家分享下。 ......
我们都知道java、c#、vb等语言都有sleep暂停的函数,而JavaScript脚本没有类似的功能。
下面就是我的实现的方法:
<mce:script type="text/javascript"><!--
function test()
{
var s="javascript--暂停函数";
setTimeout(
function(){
eval(sleep(test)); //执行return之后的代码,也就是“alert(s);”
},
2000
); //两秒后执行
return; //运行到这就退出
alert(s);
}
function sleep(func)
{
if (func == null)
{
return ;
}
var reg= /[\n\r]/g;
var funcStr = func.toString().replace(reg,''); //替换回车和换行符
reg = /.+?sleep.+?return;/;
funcStr = '{' + funcStr.replace(reg,''); //去掉函数test,return之前的代码
return funcStr;
}
test();
// --></mce:script>
这个可能有一些局限性,无法像java、C#中的sleep函数那样直观,好用。
但我觉得还蛮有趣的,就拿出来跟大家分享下。 ......
我们都知道java、c#、vb等语言都有sleep暂停的函数,而JavaScript脚本没有类似的功能。
下面就是我的实现的方法:
<mce:script type="text/javascript"><!--
function test()
{
var s="javascript--暂停函数";
setTimeout(
function(){
eval(sleep(test)); //执行return之后的代码,也就是“alert(s);”
},
2000
); //两秒后执行
return; //运行到这就退出
alert(s);
}
function sleep(func)
{
if (func == null)
{
return ;
}
var reg= /[\n\r]/g;
var funcStr = func.toString().replace(reg,''); //替换回车和换行符
reg = /.+?sleep.+?return;/;
funcStr = '{' + funcStr.replace(reg,''); //去掉函数test,return之前的代码
return funcStr;
}
test();
// --></mce:script>
这个可能有一些局限性,无法像java、C#中的sleep函数那样直观,好用。
但我觉得还蛮有趣的,就拿出来跟大家分享下。 ......
这是一个用c#控制台程序下, 用XmlDocument 进行XML操作的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门.net XML操作的朋友参考和学习。
假设有XML文件:books.xml
Xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo> ......
这是一个用c#控制台程序下, 用XmlDocument 进行XML操作的的例子,包含了查询、增加、修改、删除、保存的基本操作。较完整的描述了一个XML的整个操作流程。适合刚入门.net XML操作的朋友参考和学习。
假设有XML文件:books.xml
Xml代码:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book>
<name>哈里波特</name>
<price>10</price>
<memo>这是一本很好看的书。</memo>
</book>
<book id="B02">
<name>三国演义</name>
<price>10</price>
<memo>四大名著之一。</memo>
</book>
<book id="B03">
<name>水浒</name>
<price>6</price>
<memo>四大名著之一。</memo>
</book>
<book id="B04">
<name>红楼</name>
<price>5</price>
<memo> ......
代码如下:
<%@ Page Language="C#" Debug="true" %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<Script Language="C#" runat="server">
int Record_Per_Page;//定义每页显示记录数
int nPageCount;//定义总页数
int nRecCount;//定义总记录数
int nPage;//定义当前页
void Page_Load(Object src,EventArgs e){
//取得当前页数值,并判断
if(Request["pagesize"]==null)
Record_Per_Page=9;
else
Record_Per_Page=Convert.ToInt32(Request["pagesize"]);
//连接数据库
SqlConnection conn;
conn =new SqlConnection(ConfigurationSettings.AppSettings["strconn"]);
conn.Open();
//执行SQL语句
string ConnStr="select id,name,demo,pic from download where classid=23 or classid=24 order by time desc";
SqlDataAdapter odAdapt = new SqlDataAdapter(ConnStr,conn);
DataSet DS = new DataSet();
odAdapt.Fill(DS);
DataTable DT = DS.Tables[0];
//获得总记录数
nRecCount = DT.Rows.Count;
//判断是否存在数据记录
if(nRecCount > 0){
//确定数据记录要� ......
代码如下:
<%@ Page Language="C#" Debug="true" %>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.SqlClient"%>
<Script Language="C#" runat="server">
int Record_Per_Page;//定义每页显示记录数
int nPageCount;//定义总页数
int nRecCount;//定义总记录数
int nPage;//定义当前页
void Page_Load(Object src,EventArgs e){
//取得当前页数值,并判断
if(Request["pagesize"]==null)
Record_Per_Page=9;
else
Record_Per_Page=Convert.ToInt32(Request["pagesize"]);
//连接数据库
SqlConnection conn;
conn =new SqlConnection(ConfigurationSettings.AppSettings["strconn"]);
conn.Open();
//执行SQL语句
string ConnStr="select id,name,demo,pic from download where classid=23 or classid=24 order by time desc";
SqlDataAdapter odAdapt = new SqlDataAdapter(ConnStr,conn);
DataSet DS = new DataSet();
odAdapt.Fill(DS);
DataTable DT = DS.Tables[0];
//获得总记录数
nRecCount = DT.Rows.Count;
//判断是否存在数据记录
if(nRecCount > 0){
//确定数据记录要� ......