mySum3 = SumNumbers;
AsyncCallback callback = c => Console.WriteLine("线程ID:{0},回调函数执行:{1}",Thread.CurrentThread.ManagedThreadId,c.AsyncState);
IAsyncResult result1= mySum1.BeginInvoke(10000, callback, "第一个异步");
IAsyncResult result2= mySum2.BeginInvoke(10000, callback, "第二个异步");
IAsyncResult result3= mySum3.BeginInvoke(10000, callback, "第三个异步");
//异步等待方式1:使用EndInvoke
int asyc1 = mySum1.EndInvoke(result1);
Console.WriteLine("第一个异步已经执行完成,结果:{0}",asyc1);
//异步等待方式2:使用AsyncWaitHandle.WaitOne,参数-1表示一直等待到执行完成
if (result2.AsyncWaitHandle.WaitOne(-1))
Console.WriteLine("第二个异步执行完成");
//异步等待方式3:使用IsCompleted判断
while (!result3.IsCompleted)
Console.WriteLine("第三个异步还在执行中....");
Thread.Sleep(300);
Console.WriteLine("第三个异步执行完成");
Console.ReadKey();
public static int SumNumbers(int count)
int sum = 0;
for (int i = 0; i < count; i++)
sum += i;
Thread.Sleep(3000);
return sum;
C# -- 使用委托 delegate 执行异步操作
委托是一种安全地封装方法的类型,它与 C 和 C++ 中的函数指针类似。 与 C 中的函数指针不同,委托是面向对象的、类型安全的和保险的。
委托的类型由委托的名称定义。
1. 使用委托异步执行方法
class Program
public delegate void myWorking(string s);
static void Main(string[] args)
Console.WriteLine("主线程开始....线程ID:{0}", Thread.CurrentThread.ManagedThreadId);
myWorking myWork1 = new myWorking(w1 => Working(w1));
myWorking myWork2 = new myWorking(w2 => Working(w2));
myWorking myWork3 = new myWorking(w3 => Working(w3));
myWorking myWork4 = new myWorking(w4 => Working(w4));
myWorking myWork5 = new myWorking(w5 => Working(w5));
//回调函数
AsyncCallback callback=new AsyncCallback(s=>Console.WriteLine("执行完成,线程ID:{0}",Thread.CurrentThread.ManagedThreadId));
//BeginInvoke异步执行,会新启动其他线程去执行代码
myWork1.BeginInvoke("唱歌", callback,null);
myWork2.BeginInvoke("写代码", callback, null);
myWork3.BeginInvoke("查资料", callback, null);
myWork4.BeginInvoke("交作业", callback, null);
myWork5.BeginInvoke("检查", callback, null);
Console.WriteLine("主线程结束....线程ID:{0}", Thread.CurrentThread.ManagedThreadId);
Console.ReadKey();
private static void Working(string strWork)
Console.WriteLine(strWork+".....线程ID:{0}",Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(3000);
2. 执行结果:
JavaScript -- 原型:prototype的使用
在 JavaScript 中,prototype 是函数的一个属性,同时也是由构造函数创建的对象的一个属性。 函数的原型为对象。 它主要在函数用作构造函数时使用。
可以使用 prototype 属性向对象添加属性和方法,甚至于已创建的对象也是如此。
1. 举例:
<!doctype html>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript">
function Person(name,age,email)
this.Name=name;
this.Age=age;
this.Email=email;
var p1= new Person('小胡子',20,'xiaohuzi@test.com');
Person.prototype.Address='China';
alert(p1.Name+' '+p1.Age+' '+p1.Email+' '+p1.Address);
</script>
</head>
2. 运行结果:
1、执行多条SQL语句,实现数据库事务
2、执行一条计算查询结果语句,返回查询结果(object)
3、执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
4、执行查询语句,返回DataTable
5、执行查询语句,返回DataSet
6、执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
7、执行存储过程,带参数
8、构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
9、执行存储过程,返回影响的行数
10、创建 SqlCommand 对象实例(用来返回一个整数值)
using System;
using System.Collections;
using System.Collections.Specialized;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.Common;
using System.Collections.Generic;
namespace DAL
/// <summary>
/// 数据访问抽象基础类
/// </summary>
public abstract class DbHelperSQL
//数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.
//private const string connectionString = "Data Source=.;Initial Catalog=数据库名称;User ID=sa;Password=数据库密码";
public static string connectionString = ConfigurationManager.ConnectionStrings["Data"].ConnectionString;
public DbHelperSQL()
#region 公用方法
/// <summary>
/// 判断是否存在某表的某个字段
/// </summary>
/// <param name="tableName">表名称</param>
/// <param name="columnName">列名称</param>
/// <returns>是否存在</returns>
public static bool ColumnExists(string tableName, string columnName)
string sql = "select count(1) from syscolumns where [id]=object_id('" + tableName + "') and [name]='" + columnName + "'";
object res = GetSingle(sql);
if (res == null)
return false;
return Convert.ToInt32(res) > 0;
public static int GetMaxID(string FieldName, string TableName)
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
return 1;
return int.Parse(obj.ToString());
public static bool Exists(string strSql)
object obj = GetSingle(strSql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
cmdresult = 0;
cmdresult = int.Parse(obj.ToString());
if (cmdresult == 0)
return false;
return true;
/// <summary>
/// 表是否存在
/// </summary>
/// <param name="TableName"></param>
/// <returns></returns>
public static bool TabExists(string TableName)
string strsql = "select count(*) from sysobjects where id = object_id(N'[" + TableName + "]') and OBJECTPROPERTY(id, N'IsUserTable') = 1";
//string strsql = "SELECT count(*) FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[" + TableName + "]') AND type in (N'U')";
object obj = GetSingle(strsql);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
cmdresult = 0;
cmdresult = int.Parse(obj.ToString());
if (cmdresult == 0)
return false;
return true;
public static bool Exists(string strSql, params SqlParameter[] cmdParms)
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
cmdresult = 0;
cmdresult = int.Parse(obj.ToString());
if (cmdresult == 0)
return false;
return true;
#endregion
#region 执行简单SQL语句
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
catch (System.Data.SqlClient.SqlException e)
connection.Close();
throw e;
public static int ExecuteSqlByTime(string SQLString, int Times)
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
connection.Open();
cmd.CommandTimeout = Times;
int rows = cmd.ExecuteNonQuery();
return rows;
catch (System.Data.SqlClient.SqlException e)
connection.Close();
throw e;
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static int ExecuteSqlTran(List<String> SQLStringList)
using (SqlConnection conn = new SqlConnection(connectionString))
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
int count = 0;
for (int n = 0; n < SQLStringList.Count; n++)
string strsql = SQLStringList[n];
if (strsql.Trim().Length > 1)
cmd.CommandText = strsql;
count += cmd.ExecuteNonQuery();
tx.Commit();
return count;
catch
tx.Rollback();
return 0;
/// <summary>
/// 执行带一个存储过程参数的的SQL语句。
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, string content)
using (SqlConnection connection = new SqlConnection(connectionString))
SqlCommand cmd = new SqlCommand(SQLString, connection);
System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
myParameter.Value = content;
cmd.Parameters.Add(myParameter);
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
catch (System.Data.SqlClient.SqlException e)
throw e;
finally
cmd.Dispose();
connection.Close();
/// <summary>
/// 执行带一个存储过程参数的的SQL语句。
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>
/// <returns>影响的记录数</returns>
public static object ExecuteSqlGet(string SQLString, string content)
using (SqlConnection connection = new SqlConnection(connectionString))
SqlCommand cmd = new SqlCommand(SQLString, connection);
System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@content", SqlDbType.NText);
myParameter.Value = content;
cmd.Parameters.Add(myParameter);
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
return null;
return obj;
catch (System.Data.SqlClient.SqlException e)
throw e;
finally
cmd.Dispose();
connection.Close();
/// <summary>
/// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)
/// </summary>
/// <param name="strSQL">SQL语句</param>
/// <param name="fs">图像字节,数据库的字段类型为image的情况</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)
using (SqlConnection connection = new SqlConnection(connectionString))
SqlCommand cmd = new SqlCommand(strSQL, connection);
System.Data.SqlClient.SqlParameter myParameter = new System.Data.SqlClient.SqlParameter("@fs", SqlDbType.Image);
myParameter.Value = fs;
cmd.Parameters.Add(myParameter);
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
catch (System.Data.SqlClient.SqlException e)
throw e;
finally
cmd.Dispose();
connection.Close();
/// <summary>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(object)</returns>
public static object GetSingle(string SQLString)
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
connection.Open();
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
return null;
return obj;
catch (System.Data.SqlClient.SqlException e)
connection.Close();
throw e;
public static object GetSingle(string SQLString, int Times)
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
connection.Open();
cmd.CommandTimeout = Times;
object obj = cmd.ExecuteScalar();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
return null;
return obj;
catch (System.Data.SqlClient.SqlException e)
connection.Close();
throw e;
/// <summary>
/// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
/// </summary>
/// <param name="strSQL">查询语句</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader ExecuteReader(string strSQL)
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(strSQL, connection);
connection.Open();
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
return myReader;
catch (System.Data.SqlClient.SqlException e)
throw e;
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet Query(string SQLString)
using (SqlConnection connection = new SqlConnection(connectionString))
DataSet ds = new DataSet();
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, "ds");
catch (System.Data.SqlClient.SqlException ex)
throw new Exception(ex.Message);
return ds;
/// <summary>
/// 执行查询语句,返回pageDataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet pageQuery(string SQLString, int PageIndex, int PageSize)
using (SqlConnection connection = new SqlConnection(connectionString))
DataSet ds = new DataSet();
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.Fill(ds, PageIndex, PageSize, "ds");
catch (System.Data.SqlClient.SqlException ex)
throw new Exception(ex.Message);
return ds;
public static DataSet Query(string SQLString, int Times)
using (SqlConnection connection = new SqlConnection(connectionString))
DataSet ds = new DataSet();
connection.Open();
SqlDataAdapter command = new SqlDataAdapter(SQLString, connection);
command.SelectCommand.CommandTimeout = Times;
command.Fill(ds, "ds");
catch (System.Data.SqlClient.SqlException ex)
throw new Exception(ex.Message);
return ds;
#endregion
#region 执行带参数的SQL语句
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand())
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
catch (System.Data.SqlClient.SqlException e)
throw e;
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public static void ExecuteSqlTran(Hashtable SQLStringList)
using (SqlConnection conn = new SqlConnection(connectionString))
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
SqlCommand cmd = new SqlCommand();
foreach (DictionaryEntry myDE in SQLStringList)
string cmdText = myDE.Key.ToString();
SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
trans.Commit();
catch
trans.Rollback();
throw;
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>
public static void ExecuteSqlTranWithIndentity(Hashtable SQLStringList)
using (SqlConnection conn = new SqlConnection(connectionString))
conn.Open();
using (SqlTransaction trans = conn.BeginTransaction())
SqlCommand cmd = new SqlCommand();
int indentity = 0;
foreach (DictionaryEntry myDE in SQLStringList)
string cmdText = myDE.Key.ToString();
SqlParameter[] cmdParms = (SqlParameter[])myDE.Value;
foreach (SqlParameter q in cmdParms)
if (q.Direction == ParameterDirection.InputOutput)
q.Value = indentity;
PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
foreach (SqlParameter q in cmdParms)
if (q.Direction == ParameterDirection.Output)
indentity = Convert.ToInt32(q.Value);
cmd.Parameters.Clear();
trans.Commit();
catch
trans.Rollback();
throw;
/// <summary>
/// 执行一条计算查询结果语句,返回查询结果(object)。
/// </summary>
/// <param name="SQLString">计算查询结果语句</param>
/// <returns>查询结果(object)</returns>
public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand cmd = new SqlCommand())
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
object obj = cmd.ExecuteScalar();
cmd.Parameters.Clear();
if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
return null;
return obj;
catch (System.Data.SqlClient.SqlException e)
throw e;
/// <summary>
/// 执行查询语句,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
/// </summary>
/// <param name="strSQL">查询语句</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader ExecuteReader(string SQLString, params SqlParameter[] cmdParms)
SqlConnection connection = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
SqlDataReader myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return myReader;
catch (System.Data.SqlClient.SqlException e)
throw e;
// finally
// {
// cmd.Dispose();
// connection.Close();
// }
/// <summary>
/// 执行查询语句,返回DataTable
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataTable</returns>
public static DataTable GetDataTable(string SQLString, params SqlParameter[] cmdParms)
using (SqlConnection connection = new SqlConnection(connectionString))
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
DataSet ds = new DataSet();
da.Fill(ds, "ds");
cmd.Parameters.Clear();
catch (System.Data.SqlClient.SqlException ex)
throw new Exception(ex.Message);
return ds.Tables[0];
/// <summary>
/// 执行查询语句,返回DataSet
/// </summary>
/// <param name="SQLString">查询语句</param>
/// <returns>DataSet</returns>
public static DataSet PageQuery(string SQLString, int PageIndex, int PageSize, params SqlParameter[] cmdParms)
using (SqlConnection connection = new SqlConnection(connectionString))
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
DataSet ds = new DataSet();
da.Fill(ds,PageIndex, PageSize, "ds");
cmd.Parameters.Clear();
catch (System.Data.SqlClient.SqlException ex)
throw new Exception(ex.Message);
return ds;
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
foreach (SqlParameter parameter in cmdParms)
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
parameter.Value = DBNull.Value;
cmd.Parameters.Add(parameter);
#endregion
#region 存储过程操作
/// <summary>
/// 执行存储过程,返回SqlDataReader ( 注意:调用该方法后,一定要对SqlDataReader进行Close )
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlDataReader</returns>
public static SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)
SqlConnection connection = new SqlConnection(connectionString);
SqlDataReader returnReader;
connection.Open();
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.CommandType = CommandType.StoredProcedure;
returnReader = command.ExecuteReader(CommandBehavior.CloseConnection);
return returnReader;
/// <summary>
/// 执行存储过程
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="tableName">DataSet结果中的表名</param>
/// <returns>DataSet</returns>
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)
using (SqlConnection connection = new SqlConnection(connectionString))
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
public static DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName, int Times)
using (SqlConnection connection = new SqlConnection(connectionString))
DataSet dataSet = new DataSet();
connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand(connection, storedProcName, parameters);
sqlDA.SelectCommand.CommandTimeout = Times;
sqlDA.Fill(dataSet, tableName);
connection.Close();
return dataSet;
/// <summary>
/// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)
/// </summary>
/// <param name="connection">数据库连接</param>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand</returns>
private static SqlCommand BuildQueryCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
SqlCommand command = new SqlCommand(storedProcName, connection);
command.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter parameter in parameters)
if (parameter != null)
// 检查未分配值的输出参数,将其分配以DBNull.Value.
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
parameter.Value = DBNull.Value;
command.Parameters.Add(parameter);
return command;
/// <summary>
/// 执行存储过程,返回影响的行数
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <param name="rowsAffected">影响的行数</param>
/// <returns></returns>
public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)
using (SqlConnection connection = new SqlConnection(connectionString))
int result;
connection.Open();
SqlCommand command = BuildIntCommand(connection, storedProcName, parameters);
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
//Connection.Close();
return result;
/// <summary>
/// 创建 SqlCommand 对象实例(用来返回一个整数值)
/// </summary>
/// <param name="storedProcName">存储过程名</param>
/// <param name="parameters">存储过程参数</param>
/// <returns>SqlCommand 对象实例</returns>
private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters)
SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
command.Parameters.Add(new SqlParameter("ReturnValue",
SqlDbType.Int, 4, ParameterDirection.ReturnValue,
false, 0, 0, string.Empty, DataRowVersion.Default, null));
return command;
#endregion
获取控制器名称:
ViewContext.RouteData.Values["controller"].ToString();
获取Action名称:
ViewContext.RouteData.Values["action"].ToString();
获取路由参数值:
ViewContext.RouteData.Values[名称].ToString();
如:ViewContext.RouteData.Values["ID"].ToString(); 获取ID的值
获取area名称
在代码中:
ControllerContext.RouteData.DataTokens["area"]
在View中:
ViewContext.RouteData.DataTokens["area"]
代码如下:
var action = ViewContext.RouteData.Values["Action"].ToString().ToLower();
var controllerName = ViewContext.RouteData.Values["controller"].ToString().ToLower();
var areaName = ViewContext.RouteData.DataTokens["area"].ToString().ToLower();
var modalID = Request["ModalID"];//举例,url如 edit?modalid=1