这里收集到一些资料,是很久以前听到的一首歌《心愿》的。网上有很多人把《心愿》这首歌的四个女生当成了马来西亚的4inlove这个组合,其实是错误的。下面把我搜集到的资料转载如下,希望对大家有帮助: 曾经那首《心愿》和《同桌的你》一样风靡整个校园,而民大人往往更加乐道的是《心愿》以及那四位漂亮的女生。确实,那是一首非常动听的歌曲,还有一幅很怀旧的照片,那也曾是民大人一个美好的回忆。但是,那是不属于民大人的《心愿》,只是发生在民大的校园里!详情如下:1、那张怀旧的照片,拍摄于中央民族大学北主楼(现在的北智楼)的一个教室里,外面的葱郁的柏树现在还屹立在那里。 2、《心愿》词曲兼演唱——王泽介绍 1978年生于北京; 1993-1996年任北京青年报中学生通讯社记者兼副社长,负责校园音乐栏目; 1996年录制《第一直觉》合辑;同年考入北京理工大学; 1998年《第一直觉》合辑由上海声像出版社出版;同年,小说《王者当歌》由河北人民出版社出版; 2000年9月,赴美费城艺术学院学设计专业; 2002年5月研究生毕业后在美国工作; 创作的歌曲共4首:心愿、航行(收在《第一直觉》合辑);一棵叫做feeling的植物、山歌(收在《校园feeling》合辑); 王泽 邮址:zezecn@yahoo.com 3、《心愿》的歌词介绍 心愿 词曲:王泽 演唱:王泽 杨颖 乔媛 唐景莲 湖水是你的眼神 梦想满天星辰 心情是一个传说 亘古不变地等候 成长是一扇树叶的门 童年有一群亲爱的人 春天是一段路程 沧海桑田的拥有 那些我爱的人 那些离逝的风 那些永远的誓言 一遍一遍 那些爱我的人 那些沉淀的泪 那些永远的誓言 一遍一遍 我们都曾有过一张天真而忧伤的脸 手握阳光我们望着遥远 轻轻的一天天一年又一年 长大间我们是否还会再唱起心愿 长大间我们是否还会再唱起心愿 音乐下载地址:http://211.99.191.19:8080/getfile/jV1ViGyBfHe63tjretIvegjue0YW4BaleB+w.mp3 4、作者王泽的说明(王泽在网上对大家的回复) 作者:王泽 回复日期:2003-07-03 23:37:30 继续介绍。 说明一下,这首歌是我高二的秋天,大约16岁生日前后写的,96年夏天我们四个都是刚高考结束那时候录的。所以说是大学女生的校园歌曲不是很准确。不过很多大学里的朋友并不觉得它太幼稚,我也很高兴啦。她们三个,乔媛读的是北京旅游学院,杨颖是北京商学院,日语,唐景莲是北京工业大学。大学里面我曾经请她们过来我们俱乐部的演出一起唱歌,也参加过北京音乐台的演出,还有拍那个12演播室的采访片子–那张照片就是当时拍片子时候我的大学同学秦燕给我们拍的。当时是年底,我们也不是专业演员/歌手,没有化妆,没有特别的服装,就随便拍了玩的。拍出来的片子我也没有留底子,只有一两张照片了。我不太清楚她们几个毕业以后到现在的情况,杨颖有可能在海南和她的很帅的BF在一起,乔媛在北京工作,唐景莲的消息我暂时没有。 很盼望有机会回国一次和她们再聚一聚 作者:王泽 回复日期:2003-07-0721:09:44 再次感谢大家喜欢这首歌。:)想要再次罗嗦的是: 1.首歌是94年写的,当时我15/16岁,录音是96年夏天,我17岁,我的同伴也不过18。出版是98/99年,CZ音乐(香港)合集<第一直觉>。严格说不算大学生原创。 2.我们几个都不是专业歌手/演员,CZ音乐录音是追求的也是阁楼录音的效果,详细参见第一直觉的介绍。这张照片是我曾经贴在校园民谣网上的,为了介绍和我一起唱歌的几个女孩,因为很多地方网站转载没有写全她们的名字。98年底中央电视台12演播室给我拍摄一个短采访时候,我又约了她们来拍摄,在中央民族大学的一间教室里我的好朋友秦燕给我们拍了这个照片。 本来我是不应该贴她们的照片的,更不应该被转载得到处都是。只是中央台的节目早也播出了,她们也是我的好朋友,想来不算侵权。 3.我们不是专业歌手/演员,也无心走这条路。前面诸位要帮我们包装/推广的朋友,费心了。 4.我们也不是中央民族大学的学生,好多网站上都误写了,我也解释一下叭。 5.希望大家一直都喜欢音乐:) 结束语:不管怎么样,我们都应该去聆听这首歌曲,虽然不是民大人的《心愿》,但是我们学到了歌曲作者身上的那种青春活力,我们每个人都应该保持并追求自己的《心愿》! from:http://blog.sina.com.cn/s/blog_3cc43f5d01017j95.html
View Details前一篇说了MVC数据验证的例子,这次来详细说说各种各样的验证注解。System.ComponentModel.DataAnnotations 一、基础特性 一、Required 必填选项,当提交的表单缺少该值就引发验证错误。 二、StringLength 指定允许的长度 指定最大长度:
1 |
[StringLength(20)] //最大长度不超过20个字符 |
指定最短于最长限制:
1 |
[StringLength(20,MinimumLength=3)] //最大长度不超过20个字符,最短不能低于3个字符 |
三、RegularExpression 正则表达式能够匹配的字符串,如果不能匹配,则报一个验证错误
1 |
[RegularExpression(@"[A-Za-z0-9.%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}")] |
如邮箱格式验证:
1 |
[RegularExpression(@"^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$", ErrorMessage = "请输入正确的电子邮箱地址!")] |
四、Range Range特性用来指定数值类型值的最小值和最大值。
1 2 |
[Range(35,44)] //整型,最小35,最大44 [Range(typeof(decimal),"0.00","49.99")] //decimal类型 |
五、Remote 允许利用服务器端的回调函数执行客户端的验证逻辑。说白了就是支持AJAX验证。 需要引用命名空间:System.Web.Mvc; 这个写个异步验证用户名是否存在的DEMO:
1 2 3 4 5 6 7 |
[Required] [Remote("CheckUserName", "Home")] public string UserName { get; set; } |
Controller代码:
1 2 3 4 5 6 7 8 9 |
public JsonResult CheckUserName(string UserName) { bool result = true; if (UserName == "admin") { result = false; } return Json(result,JsonRequestBehavior.AllowGet); } |
显示结果: 留意到,是通过AJAX发送UserName的值到服务器端判断过的。 六、Compare 用于确保模板对象的两个对象拥有相同的值。 例如,通常输入密码之后还要求用户再次确认密码,这时候就是Compare属性发挥作用的时候了。
1 |
[Compare("要对比的属性名")] |
以上特性需要 using System.ComponentModel.DataAnnotations; 同时需要注意Web.config里面的这两个选项是否设置为了true;
1 2 |
<add key="ClientValidationEnabled" value="true"/> <add key="UnobtrusiveJavaScriptEnabled" value="true"/> |
二、自定义错误提示消息 每个特性都允许传递一个带有自定义错误提示消息的参数。
1 2 3 4 5 6 7 |
[Required(ErrorMessage="用户名必须填写")] [Remote("CheckUserName", "Home",ErrorMessage="此用户名已存在")] public string UserName { get; set; } |
自定义错误消息,还有一个格式项,如
1 2 3 4 5 6 |
[Required(ErrorMessage="{0}必须填写")] publit string Name { get; set; } |
则{0}在输入的时候会被Name替换。 如果以上的验证方式还不够,你还可以自定义验证,到时候忘记了可以翻《Asp.net MVC3 高级编程》第127页。这里就不写DEMO了,用到再写。 三、显示和编辑注解 1、Display 如果使用的是直接EditorForModel实现的话,Display特性可以帮助你设置友好的显示名称 例如:
1 2 |
[Display(Name="密码")] public string PassWord { get; set; } |
显示结果如下: 其次Display还支持显示属性的顺序,如
1 2 3 4 |
[Display(Name="密码",order = 15000)] public string PassWord { get; set; } [Display(Name="密码",order = 15001)] public string UserName { get; set; } |
后面的顺序是显示编辑框的顺序,默认是10000,按升值排序。 2、ScaffoldColumn 隐藏Html辅助方法(如EditorForModel,DisplayForModel)显示一些属性。
1 2 |
[ScaffoldColumn(false)] //不显示该属性的编辑框 public string UserName { get; set; } |
虽然ScaffoldColumn可以做到不显示一些属性在页面上被编辑,但是如果提交的Form有这个属性值,模型绑定机制依然会绑定此属性值。要解除就要显式的[Bind]了,这个与本篇无关。此处不提。 3、DisplayFormat DisplayFormat特性可以用来处理属性的各种格式化选项。当属性包含空值时,可以提供可选的显示文本,也可以为包含标记的属性关闭HTML编码,还可以为运行时指定一个应用于属性值的格式化字符串。 例如:
1 2 |
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:c}")] public decimal money { get; set; } |
这样,当有初始值的时候,显示的代码将如下所示: 注意是初始值,如果是直接填写的并不会有符号。来看Controller中设置的初始值:
1 2 3 4 5 6 |
public ActionResult PersonAdd() { Person_Model p = new Person_Model(); p.money = 12.10M; return View(p); } |
此显示样式在提交回Controller中是没用的,因为模型绑定器将不能解析返回的价格值。怎么用自己斟酌,用于显示还是OK的。 4、ReadOnly 如果确保默认的模型绑定器不使用请求中的新值更新属性,可以给属性添加ReadOnly特性:
1 2 |
[ReadOnly(true)] public string Name { get; set; } |
注意,此属性仍然会显示一个可编辑的文本框来显示Name,但是模型绑定器不会接收其值,因此只有模型绑定器考虑ReadOnly属性。 5、DataType DataType特性可以为运行时提供关于属性的特定用途的信息。 例如:
1 2 |
[DataType(DataType.Password)] public string PassWord { get; set; } |
显示效果如下: 该属性可以用于指定多选按钮,单选按钮,密码输入框,等等类型的数据。 6、UIHint UIHint特性给Asp.net MVC运行时提供了一个模板名字,以备调用模板辅助方法如(DisplayFor和EditorFor)渲染输出时使用。也可以自定义自己的模板辅助方法来重写Asp.net MVC的默认行为。 7、HiddenInput HiddentInput在名称空间System.Web.Mvc中,它可以告知运行时渲染一个type特性值为"hidden"的输入元素。说白了就是<input type="hidden" value="xxx" /> 四、验证示例 首先新建一个MVC项目。添加如下代码,代码非常简单:一个Person_Model类 […]
View Details此枚举用于指定要与数据列或参数关联的数据类型。 成员名称 说明 Custom 表示自定义的数据类型。 DateTime 表示时间上的一刻,以日期和当天的时间表示。 Date 表示日期值。 Time 表示时间值。 Duration 表示对象存在的一段连续时间。 PhoneNumber 表示电话号码值。 Currency 表示货币值。 Text 表示所显示的文本。 Html 表示一个 HTML 文件。 MultilineText 表示多行文本。 EmailAddress 表示电子邮件地址。 Password 表示密码值。 Url 表示 URL 值。
View Details