安装,去官网上下,http://www.microsoft.com/web/gallery/install.aspx?appsxml=&appid=MVC3

提供一个学习地址,讲的很详细,英文的自己去看http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part3-cs

》新建项目

 使用新特性吧,razor模板,html5支持,创建一个view,当然这不是必须的,可以先建立一个 control,这view和controller啥关系呢,一主外,一主内,懂就行,

 没有view,controller照常运行,没有controller当然了,静态页面也可以

 view和controller访问规则,[controller]/action/parameters/ 都是可选择项,

 url和项目物理结构对应关系:

 controller 就是views里面文件夹的名字,默认访问的是文件夹下index.cshtml ,如果没有view访问的就是controllers文件夹里面除去controller的cs文件名,默认访问的是index() 方法

 

可能看到

View Code
@{
    Layout 
= "~/Views/Shared/_Layout.cshtml";
}

 

这个东西,不用理它,输入域名的时候,就是去找哪个view,就算没有这个,没关系,control会直接定向到/shared/_Layout.cshtml

可以对页面做基本布局

2,@Html.Partial("_LogOnPartial")

 带@是服务端代码开始,很方便

Partial应该不陌生,类里面用来同个类的文件拆分,意思差不多,这里就表示此页面的引用view,相当于html里面的incluede,不过这里功能更加强大,三种重载保证你可以传参过去

3,ActionLink 注意

Html.ActionLink("linkText","actionName",routeValues,htmlAttributes)

htmlAttribute可以设置<a>标签的属性,如 Html.ActionLink("detail","Detail",new{id=1},new{ target="_blank"})会生成 <a href="Products/Detail/1" target="_blank">detail</a>,需要主要的是如果写成 new{ target="_blank",class="className"}则会报错,因为class是关键字,此处应该写成 @class="className"。

4,viewbag好东西,不过不性能咋样

  viewbag 动态类型,MS是这么说的 ViewBag is a dynamic object, which means you can put whatever you want in to it; the ViewBag object has no defined properties until  you put something inside it.  可以放任何对象到里面,类型未知,直到放进去了才初始化类型,芥子空间,啥都可以放。对象数据会立即传送到view

在view里面取值

 

View Code
@{ 
    ViewBag.Title 
= "Welcome"

 
<h2>Welcome</h2> 
 
<ul>  
   @for (
int i=0; i < ViewBag.NumTimes; i++) {  
      
<li>@ViewBag.Message</li>  
   }  
</ul>

 

 

 

 

posted @ 2011-04-19 15:45 云淡风轻-.net 阅读(717) 评论(0) 编辑
//获取转换工具路径
    public static string ffmpegtool = ConfigurationManager.AppSettings["ffmpeg"];  
    //获取视频的文件夹名
    public static string upFile = "upfile/";
    //获取图片文件的文件夹名
    public static string imgFile = "imgFile/";
    //获取转换后文件的文件夹名
    public static string playFile = "playFile/";
    //文件图片大小
    public static string sizeOfImg = ConfigurationManager.AppSettings["imgSize"];
    //文件大小
    public static string widthOfFile = ConfigurationManager.AppSettings["widthSize"];
    public static string heightOfFile = ConfigurationManager.AppSettings["heightSize"];
 

    /// <summary>
    /// 将视频文件转换成flv格式,并保存到playFile文件夹下
    /// </summary>
    /// <param name="fileName">需要转换视频的路径</param>
    /// <param name="playFile">视频转换flv格式后保存的路径</param>
    /// <param name="imgFile">在视频文件中抓取图片后保存路径</param>
    /// <returns>成功:返回图片虚拟地址;   失败:返回空字符串</returns>
    public static  bool  changeVideoType(string fileName, string playFile, string imgFile)
    {
        //获取视频转换工具的路径
        string ffmpeg= System.Web.HttpContext.Current.Server.MapPath("../") + ffmpegtool;
        //获取需要转换的视频路径
        string Name = System.Web.HttpContext.Current.Server.MapPath("../") + upFile + "/" + fileName;
        if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(Name)))
        {
            return false;
        }             
        //获取视频转换后需要保存的路径
        string flv_file = playFile;
        //创建Process对象
        Process pss = new Process();
        //不显示窗口
        pss.StartInfo.CreateNoWindow = false;
        //设置启动程序的路径
        pss.StartInfo.FileName = ffmpeg;
        //设置执行的参数
        pss.StartInfo.Arguments = " -i " + Name + " -ab 128 -ar 22050 -qscale 6 -r 29.97 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
      
        try
        {
            //启动转换工具         
            pss.Start();
            while (!pss.HasExited)
            {
                continue;              
            }
          
            //截取视频的图片
            catchImg(Name, imgFile);
            System.Threading.Thread.Sleep(4000);
            if (!File.Exists(imgFile))
            {
                File.Copy(System.Web.HttpContext.Current.Server.MapPath("../") + "imgHead\\default.gif", imgFile);
            }

            return true;
        }
        catch
        {
            return false;
        }      
      
    }

 

   /// <summary>
    /// 对视频进行图片截取
    /// </summary>
    /// <param name="fileName">需要截取图片的视频路径</param>
    /// <param name="imgFile">截取图片后保存的图片路径</param>
   
    public static void catchImg(string fileName,string imgFile)
    {
        //获取截图工具路径
        string ffmpeg = System.Web.HttpContext.Current.Server.MapPath("../") + ffmpegtool;
        //获取截图后保存的路径
        string flv_img = imgFile;
        //获取截取图片的大小
        string FlvImgSize = sizeOfImg;
        Process pss = new Process();    
        //设置启动程序的路径
        pss.StartInfo.FileName = ffmpeg;      
        pss.StartInfo.Arguments = "   -i   " + fileName + "  -y  -f  image2   -ss 2 -vframes 1  -s   " + FlvImgSize + "   " + flv_img;
        //启动进程
        pss.Start();       
    
    } 

posted @ 2010-11-17 21:26 云淡风轻-.net 阅读(223) 评论(0) 编辑

搭建windows下面的android开发环境一般需要以下工具或软 件:

1. jdk(要求jdk5或jdk6)

2. eclipse(要求eclipse3.4或eclipse3.5)

3. Android SDK(主要包含android应用开发所需要的API,和一些辅助工具)

4. Android Development Tools(ADT,是一个eclipse插件,用于在eclipse IDE里快速创建,调试Android应用程序)

 

 

 

接下来当然是搭建Android 的开发环境啦,步骤如下:

 

1. 安装JDK。注意这里只是安装JRE是不行的,需要安装JDK
 

笔者是去 http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载了 JDK 6 Update 20。
注: 根据www.eclipse.org的官方信息,在windows 平台上安装了JDK 6 Update 21,然后运行Eclipse Helios (3.6) 会出现 crashing,需要进行一些设置 ( http://wiki.eclipse.org/FAQ_How_do_I_run_Eclipse%3F#Oracle.2FSun_VM_1.6.0_21_on_Windows )

Windows 7:
1) 双击 jdk-6u20-windows-i586.exe 进行安装
2) 安装完成后,在命令行中输入 "java -version",若出现以下信息则表示安装成功:

java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) Client VM (build 16.3-b01, mixed mode, sharing) 

 

 

2. 安装Android SDK


这一步是废去 笔者 最多时间和精力的。。。
通过查询资料得知,google的Android官方网址已经由 http://dl.google.com/android 迁移到了 http://developer.android.com,但是遗憾的是国内对网站 developer.android.com 进行了屏蔽(实在是搞不懂是啥原因~~),无法直接访问。

 

大家可以通过代理软件或在线代理来访问(速度稍慢),也可以访问developer.android.com的镜像。下面是笔者整理的几个镜像网址:

http://androidappdocs.appspot.com
https://txt.appspot.com/developer.android.com

 

笔者这里使用 androidappdocs.appspot.com 这个镜像网站来访问 developer.android.com 。
选择SDK这个tab项,发现现在最新的Android SDK版本是2.2:

 

<Windows 7>
1) 下载 android-sdk_r06-windows.zip,大小是 23293160 bytes, MD5是 7c7fcec3c6b5c7c3df6ae654b27effb5。
2) 解压 android-sdk_r06-windows.zip 到你想安装Android SDK的目录。笔者这里解压到了 D:\,于是生成了 D:\android-sdk-windows\  这个目录。
3) 在环境变量中的PATH中加入 D:\android-sdk-windows\tools 。
4) 由于google改变了下载策略(以前是sdk所以的文件集成在一个安装包中,可以离线安装),现在必须在线实时地从google网站上下载需要安装的文件来进行在线安装。双击 D:\android-sdk-windows\SDK Setup.exe 运行 Android SDK and AVD Manager。
一般情况下都出现下面的提示:
Failed to fetch URL http://dl-ssl.google.com/android/repository/repository.xml, reason: Connection timed out: connect

 

我们需要关闭 "Refresh Sources" 和 "Choose Packages to Install"窗口,点击选中左侧栏目中的 "Settings",将 "Force https//... sources to be " 勾选上,然后再选中左侧栏目中的 "Available Packages" 条目,点击 Refresh,应该就可以成功获取到安装列表了。(笔者这在费了很长时间,因为不管笔者怎么设置,一直提示 Connection timed out: connect,后来无意中查明了原因,因为笔者之前用的是 移动/铁通 的网络可能封锁了 Android SDK在线安装的网址;换成电信的网络一切正常!神啊!!)

 

5) 在安装列表中选择要安装的 apis 版本、usb驱动、SDK例子程序和SDK文档等。
笔者安装的是 Android 2.2 的SDK,对应的API代号是8。

 

 

4. 创建一个新的 Android Virtual Device (AVD)

 
  新建AVD时的 emulate 设置.
  1) 从 “Android SDK and AVD Manager”窗口的左侧选择 “Virtual Devices”

  i.选择 “New”
  ii.输入一个AVD Name
  iii.选择一个 Target
  iv.输入模拟的 SD Card 的容量大小
  v.选择一个外观皮肤 Skin
      * 保留默认的skin设置值
      让模拟器外观大小像 G1, MyTouch 3G, Hero, 等手机设备…
      * 选择 WVGA 854
      模拟 Motorola Droid
      * 选择列表内其他的选项
      模拟其他的设备
  vi.然后 “Create AVD”

(详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

PS: 现在就可运行新建的模拟器 (Virtual Device)了
  在列表里选择新建的要运行的模拟器( Virtual Device)

(详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

 

单击 "Start..."

(详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

单击 "Launch"

(详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

PS: 若遇到ERROR: unknown virtual device name 这样的问题一般是由于创建的文件路径引用错误造成的。
比如Vista可以设置用户文件到F盘下。这样在用Eclipse或者从命令行创建Android Emulator时,相应的文件是被放置到 “F:\Users\<username>\.android“ 下面了,而程序运行时仍然从 “C:\Users\<username>\.android“ 下查找相应的配置文件,从而导致上面的错误。
 

解决办法一(这也是笔者采用的方法):
新添加一个环境变量,名字为 "ANDROID_SDK_HOME” (这个变量名不能改变,只能是这个名字!),然后把变量值改为你想将".android”文件夹(AVD信息)所放置的位置,在这里我把它设置为Android SDK包中,值为:"D:\android-sdk-windows",问题解决了。

解决办法二:
把 "F:\Users\<username>\.android“ 下的文件复制到 “C:\Users\<username>\.android“ 下面也可解决这个问题,不过这样的解决方案有一个明显的缺点,那就是如果又新建立AVD,又得重新复制。


首次运行需要几分钟的时间.

(详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

 

5. 安装 Eclipse
If you need to install or update Eclipse, you can download it from this location:
http://www.eclipse.org/downloads  (A Java or RCP version of Eclipse is recommended.)

笔者这里安装的是 Eclipse IDE for Java Developers (Eclipse Helios, 3.6)。
下载完成之后,直接解压即可(笔者的安装路径 C:\Program Files\eclipse_java )。

 

6. 安装 Eclipse的Android ADT插件
1) 可以直接到Android官网去下载这个ADT插件。
笔者是到 http://androidappdocs.appspot.com/sdk/eclipse-adt.html#installing 这里下载了ADT-0.9.7.zip,大小是 8033750 bytes,MD5是 de2431c8d4786d127ae5bfc95b4605df

 

接着安装ADT插件,笔者这里是使用的直接拷贝的方式来安装的,大家也可以通过links方式安装。

 

用links方式安装的说明如下:
新建 C:\Program Files\eclipse_java\myplugins\ 和 C:\Program Files\eclipse_java\myplugins\androidadt\eclipse\ 目录,将 解压 ADT-0.9.7.zip 所得到的所有文件拷贝到 C:\Program Files\eclipse_java\myplugins\androidadt\eclipse\ 目录中。

 

新建 C:\Program Files\eclipse_java\links\ 目录,并在这个目录下面新建一个文本文件 androidadt.link,并且写入以下内容:
path = C:/Program Files/eclipse_java/myplugins/androidadt

 

如果不成功,删除 C:\Program Files\eclipse_java\configuration 目录下,删除org.eclipse.update文件夹,重启eclipse即可。

 

eclipse在启动的时候将会到指定的目录下去查找eclipse\features目录和eclipse\plugins目录,看是否有合法的功能部件和(或)插件。也就是说,目标目录必须包含一个 \eclipse 目录。如果找到,附加的功能部件和插件在运行期配置是将是可用的,如果链接文件是在工作区创建之后添加的,附加的功能部件和插件会作为新的配置变更来处理。

附加说明
  1. 插件可以分别安装在多个自定义的目录中。
  2. 一个自定义目录可以安装多个插件。
  3. link文件的文件名及扩展名可以取任意名称,比如ddd.txt,myplugin都可以。
  4. link文件中path=插件目录的path路径分隔要用\\或是/
  5. link文件可以有多行path=插件目录,对应多个自定义插件目录,每一行的path参数都将生效。
  6. 在links目录也可以有多个link文件,每个link文件中的path参数都将生效。
  7. 插件目录可以使用相对路径。
  8. 可以在links目录中建立一个子目录,转移暂时不用的插件到此子目录中,加快eclipse启动。
  9. 如果安装后看不到插件,把eclipse安装目录下的configuration/org.eclipse.update/目录整个删除,重启eclipse。

 

2) 在这一步也可以通过Eclipse自身的update功能进行下载:
启动Eclipse,选择【Help】 > 【Soft Updates】 > 【Find and Install…】
(或者是 【Help】 > 【Soft Updates】, in the dialog that appears, click the Available Software tab )

In the "Location" field, enter this URL:
https://dl-ssl.google.com/android/eclipse/

 

这时窗口中新增了“https://dl-ssl.google.com/android/eclipse/”项,选中该项,点击【Install…】按键即可下载。

 
If Eclipse can not find the remote update site containing the ADT plugin, try changing the remote site URL to use http, rather than https. That is, set the Location for the remote site to:
http://dl-ssl.google.com/android/eclipse/

 

注:许多国内的网友都无法完成这样的升级,通常是进行到一半就没有任何反映了(其他插件,例如pydev也是这样)。

 

Android ADT安装
2010-06-08 21:18

1. 下载安装JDK1.5以上,设置环境变量
2. 下载安装eclipse3.5
3. 下载Android JDK r06版本,并由此下载所需JDK,API等,并安装
4. 启动eclipse3.5 --> help -->Install new software -->add site --->对话框中name自己随便输入,
    location中输入:http://dl-ssl.google.com/android/eclipse/. 然后系统自动刷新出:
    Develper Tools( Android DDMS,Android Development Tools),全部勾上,然后一直next,直至安装完毕。

tips:中间可能会缺少组件见 http://blog.csdn.net/tiaotiaoyly/archive/2010/07/18/5745002.aspx
5. 重启系统
   这样就可以新建android工程了。


 

 

 

7. 配置 Eclipse 和 Android ADT插件

1) 设置Eclipse的Java JDK属性设置
    选择【Window】>【Preferences…】打开编辑属性窗口;选择Java属性面板;选择Java编译器为6.0;点击Apply,和OK。

2) 进行Android SDK设置
    选择【Windows】 > 【Preferences…】打开编辑属性窗口;选择Android属性面板;加入Android SDK的目录(点击【Browse…】进行选择,这里是 "D:\android-sdk-windows\" 目录)。

 

 

8. 测试开发环境

 

搭建好开发环境之后,我们来创建一个Hello World工程,体验一下Android的开发。
    1) 选择【File】>【New】>【Project】
    2) 选择【Android】>【Android Project】,点击【Next】

    (详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

    3) 对新工程进行设置,点击 Finish

    (详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

    4) 将文件HelloAndroid.java 中的代码修改为:

 

 

package com.example.hello;





public class HelloAndroid extends Activity
{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView tv
= new TextView(this);
tv.setText("Hello, Android"
);
setContentView(tv);
}
}
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

 

运行程序,第一次启动AVD,时间有点长,运行效果为:

(详解)Eclipse3.6搭建 Android 2.2 开发环境 - 刘杨 - 楊の

 

posted @ 2010-11-12 11:57 云淡风轻-.net 阅读(4953) 评论(1) 编辑

   如今,有大量的框架在帮助程序员不断的简化后台的开发,比如数据库的访问,业务与实体等等,可是在开发中,如果一个企业级项目需求有许多的表单,各种各样的,那么,我们会花大量的时间在表单的处理与验证上面,今天,我把这个话题提出来,希望能一起探讨,可以减轻工作量的方法,我很懒,不喜欢做程序可以做的重复事情

  一个表单页面,有几十个表单控件,包括文本框、下拉框、单选框、富文本控件

     验证包括 非空、长度、不同格式

     希望大家踊跃发言,小弟先在此谢过

 

posted @ 2010-06-21 21:33 云淡风轻-.net 阅读(148) 评论(7) 编辑

  以前用winforms写模板生成,现在没必要了,有了Velocity(以下简称V),就可以写出web的模板生成了。

使用很简单,下载了之后,引用dll,我这里写了一个通用的类

 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections;

using NVelocity;
using NVelocity.App;
using NVelocity;
using NVelocity.Runtime;
using Commons.Collections;
using System.IO;
using NVelocity.Context;
/// <summary>
/// BaseVelocity 的摘要说明
/// </summary>
public class BaseVelocity
{

    
/// <summary>
    
/// Common
    
/// </summary>
    
/// <param name="tempAbsPath">模板路径</param>
    
/// <param name="outAbsPath">输出绝对路径</param>
    
/// <param name="parameters">初始参数</param>
    
/// <param name="tempEncoding">模板编码[options]</param>
    
/// <param name="outEncoding">输出编码[optioins]</param>
    
/// <param name="returnStr"></param>
    
/// <returns></returns>
    private string create(string tempAbsPath, string outAbsPath,Hashtable parameters,string tempEncoding, string outEncoding,bool returnStr)
    {
        
if (tempAbsPath == "") { throw new ArgumentException("模板参数错误"); }
        
if (outAbsPath == "") { throw new ArgumentException("输出参数错误");  }
        
if (tempEncoding == "") tempEncoding = "utf-8";
        
if (outEncoding == "") outEncoding = "utf-8";


        
//创建NVelocity引擎的实例对象
        VelocityEngine velocity = new VelocityEngine();

        
//初始化该实例对象
        string root = tempAbsPath.Substring(0, tempAbsPath.LastIndexOf("\\"+ 1);
        
string fileName = tempAbsPath.Substring(tempAbsPath.LastIndexOf("\\"+ 1);
        ExtendedProperties props 
= new ExtendedProperties();
        props.AddProperty(RuntimeConstants.RESOURCE_LOADER, 
"file");
        props.AddProperty(RuntimeConstants.INPUT_ENCODING, tempEncoding);
        props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, root);
        props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, outEncoding);
        velocity.Init(props); 

        
//从文件中读取模板
        NVelocity.Template temp = velocity.GetTemplate(fileName);        
        IContext context 
= new VelocityContext();
        
if (parameters != null)
        {
            
foreach (string key in parameters.Keys)
            {
                context.Put(key, parameters[key]);
            }
        }      
     
        
//合并模板
        StringWriter writer = new StringWriter();

        
//velocity.MergeTemplate(context, writer);
        temp.Merge(context, writer);

        
//生成静态页
        if (!returnStr)
        {
            
using (StreamWriter writer2 = new StreamWriter(outAbsPath, false, System.Text.Encoding.GetEncoding(outEncoding), 200))
            {
                writer2.Write(writer);
                writer2.Flush();
                writer2.Close();
            }
        }
        
else
            
return writer.ToString();
        
return null;
    }
    
/// <summary>
    
/// 创建静态文件
    
/// </summary>
    
/// <param name="tempAbsPath">模板绝对路径</param>
    
/// <param name="outAbsPath">输出绝对路径</param>
    
/// <param name="parameters">初始参数</param>
    
/// <param name="tempEncoding">模板编码[options]</param>
    
/// <param name="outEncoding">输出编码[optioins]</param>
    
/// <param name="returnStr"></param>
    
/// <returns></returns>
    public void creatFile(string tempAbsPath, string outAbsPath, Hashtable parameters, string tempEncoding, string outEncoding)
    {
        create(tempAbsPath,outAbsPath,parameters,tempEncoding,outEncoding,
false);
    }
    
/// <summary>
    
/// 创建输出字符串
    
/// </summary>
    
/// <param name="tempAbsPath">模板绝对路径</param>
    
/// <param name="outAbsPath">输出绝对路径</param>
    
/// <param name="parameters">初始参数</param>
    
/// <param name="tempEncoding">模板编码[options]</param>
    
/// <param name="outEncoding">输出编码[optioins]</param>
    
/// <param name="returnStr"></param>
    
/// <returns></returns>
    public string createStr(string tempAbsPath, string outAbsPath, Hashtable parameters, string tempEncoding, string outEncoding)
    {
        
return create(tempAbsPath, outAbsPath, parameters, tempEncoding, outEncoding, true);
    }
}

 

这种是通过文件加载模板的

以下可以通过变量加载模板

关键代码:

 

System.Text.StringBuilder builder = new System.Text.StringBuilder();
        builder.Append(
"#foreach($u in $ListUsers)"r"n" +
            
"#beforeall"r"n" +
            
"<table border=""0"" cellpadding=""10"" cellspacing=""10"">" +
            
"<tr><td>Name</td><td>Sex</td><td>City</td></tr>" +
            
"#each"r"n" +
            
"<tr>" +
            
"<td>$u.Name</td>" +
            
"<td>$u.Sex</td>" +
            
"<td>$u.City</td>" +
            
"</tr>" +
            
"#afterall"r"n" +
            
"</table>" +
            
"#nodata"r"n" +
            
"暂无用户资料"r"n" +
            
"#end");

        VelocityEngine vltEngine 
= new VelocityEngine();
        vltEngine.Init();

        VelocityContext vltContext 
= new VelocityContext();
        vltContext.Put(
"PageTitle""字符串模板例子");
        vltContext.Put(
"ListUsers", listUsers);

        System.IO.StringWriter vltWriter 
= new System.IO.StringWriter();
        vltEngine.Evaluate(vltContext, vltWriter, 
null, builder.ToString());

        Response.Write(vltWriter.GetStringBuilder().ToString());

 

 

posted @ 2010-02-02 13:24 云淡风轻-.net 阅读(779) 评论(0) 编辑
摘要: 1,对于域名a.a.com和域名http://www.a.com/的两个页面 如果要在a.a.com使用AJAX访问http://www.a.com/的时候js 会提示"没有权限"这样的错误很明显,跨域了,在js当中跨域,怎么解决呢? 发现在页面用Script来引用http://www.google.com/js/js.js 时却不会报错,所以就想了个转化的办法也是在网上查到的,人家称之为AJAJ...阅读全文
posted @ 2010-01-28 14:44 云淡风轻-.net 阅读(2738) 评论(11) 编辑
摘要: 通常看到别人以及自己以前在绑定无限极分类的时候,总是需要多次连接数据库,这样觉得造成了资源的浪费,然后我想一次把所有数据先取出来(类型不是很多的情况),这样可以节省服务器的开销,数据库结构:classidid 主键jobClassName对应的类型名称ClassName对应的父类的id通常做法:[代码]很明显,这种做法是每个父分类都得建立一次连接,完全浪费资源现在一次取出所有分类,使用DataVi...阅读全文
posted @ 2009-11-01 19:00 云淡风轻-.net 阅读(261) 评论(0) 编辑
摘要: 有个xml文件以前用循环,然后用StringBuilder拼接输出到页面,这种写法却不被人认可,首先就是繁琐,其次,性能不一定好。今天想着写了另外一种写法。Xml结构分三层[代码]上面只是实例,一看这个结构,很不利于dataset的绑定,后来一个个的试,发现到 dataset.read()可以为每层xml结构生成一个datatable,datatable中又为每个节点生产一个节点Id,我如果要绑定...阅读全文
posted @ 2009-07-16 16:55 云淡风轻-.net 阅读(317) 评论(0) 编辑
摘要: 前一篇文章SQL SERVER2005 分区表几何倍数提高网站性能 已经讲到了如何去为一张表创建分区,今天这里要说的就是再创建好分区后,如何对分区进行修改,比如添加范围,合并范围,查询分布之类的。废话不说,代码才是硬道理1.首先要改变分区范围,就得给它一个位置吧,要把它放哪里吧,所以必须先给它一个存在的位置使用关键字next used添加一个组[代码]为架构添加范围[代码]这句话就是让下一个分区使...阅读全文
posted @ 2009-06-26 10:14 云淡风轻-.net 阅读(537) 评论(1) 编辑
摘要: 项目做到后期了,发现数据到数据在不断增长,现在是1000w多条,估计以后数据还会增加,可是现在数据库到索引也加了,在数据库做一个大大查询时,前台web会超时,很郁闷,怎么办呢,第一个想法是分库,可是分库这个表关联的太多了,并且这个表又是一对多中多大一方,不好处理,在google上工作了一天,终于让我发现了sql2005的新特性 :表分区功能表分区功能,相当于把一张表大数据无限极细化到多张表上,多个...阅读全文
posted @ 2009-06-24 18:52 云淡风轻-.net 阅读(3040) 评论(20) 编辑
摘要: 今天突然发现在ff中,访问了几个页面突然就出现Bad Request,访问其他网站没问题,在Ie中也没问题上网查资料,一个共同问题就是主机头不为空,然后我改了主机头,晕,还是没好,代码应该没问题,然后我开始测试Cookie,在火狐中cookie居然乱码然后改了代码:[代码]分别加入escape与unescape测试,成功阅读全文
posted @ 2009-06-16 10:18 云淡风轻-.net 阅读(94) 评论(0) 编辑
摘要: [代码]页面: [代码]后台程序1:[代码]后台程序2:[代码]结果:自己写的一个ajax发送请求,分别返回json和xml的,以做备用阅读全文
posted @ 2009-06-08 14:23 云淡风轻-.net 阅读(3897) 评论(8) 编辑