angzi.cnblogs.com

posts - 19, comments - 9, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

公告

2012年1月19日

在设计Mvc的视图时,觉得没有jQuery的只能提示很别扭。就考虑是不是因为没有引入vsdoc.js文件。

引入之后,智能提示果然出现了。

...

<script src="http://www.cnblogs.com/Scripts/jquery-1.7.1-vsdoc.js" type="text/javascript"></script>

...

但问题接踵而来,在调试网站时,jQery UI失效了。把引用vsdoc.js一行注视掉,就会恢复。

在没弄清楚原因的情况下,我想能不能让vsdoc.js只在设计时生效呢?因为vsdoc.js在运行时

本来就是没用的。就试着这样写:

@{
    ViewBag.Title = "jQuery and js test";
}

@if (ViewBag.Title=="hhhhh")
{
<script src="http://www.cnblogs.com/Scripts/jquery-1.7.1-vsdoc.js" type="text/javascript"></script>
}

......

果然这样可以了。不用在每次调试前都要费事把这个引用注释掉,只用发布前删掉就可以了。

posted @ 2012-01-19 16:14 http://angzi.cnblogs.com/ 阅读(784) 评论(2) 编辑

2011年6月29日

首先,在项目中已经有了一个全站公用的布局页:

/Views/Shsred/_Layout.cshtml

在部分页面中需要使用一个局部的布局页,就考虑利用布局页的嵌套,几经尝试后,总结方法如下:

1、在/Views/Shsred/文件夹下建立这个局部的布局页:

/Views/Shsred/_LocalLayout.cshtml

 

在_LocalLayout.cshtml中加上以下代码,指定自己的布局页为/Views/Shsred/_Layout.cshtml,并在合适的位置上加上@RenderBody()命令:

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

 

<div class="main">
<div class="left_pan" style="float:left">
<dl id="left_menu" class="left_menu">
<dt ><a href="">帐号管理</a></dt>
<dd ><a href="">修改密码</a></dd>
<dd ><a href="">重置密码方法</a></dd>
<dd ><a href="">修改基本信息</a></dd>
<dd ><a href="">历史记录</a></dd>
</dl>
</div>
<div class="right_pan" style="float:left" >
@RenderBody()
</div>
<div class="main_bottom" style="height:31px; background-color:blue; clear:both"></div>
</div>
</div>

 

2、在使用该布局文件的视图里边,指定使用该布局页

 

注意:

1.虽然在_ViewStart.cshtml文件中已经有以下代码:

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

   仍然需要_LocalLayout.cshtml文件中显式规定自己的布局页,不然系统不会自动将其嵌套进网站的全局布局页。

2._LocalLayout.cshtml文件必须位于/Views/Shsred/文件夹下,不然也不会嵌套近全局布局页(此条未经充分验证)。

 

此文乃今天尝试的结果,临近下班,仓促成文,以为备忘。

posted @ 2011-06-29 19:10 http://angzi.cnblogs.com/ 阅读(1534) 评论(2) 编辑

2011年6月25日

EF code first中,支持对模型上数据批注属性(Data Annotation Validation
attributes)的自动强制验证是其中之一。它让你很容易地在模型层实现属性层验证逻辑。

 

你能应用验证属性attribute)—— 如.NET 4内置的[Required],[Range]—— [RegularExpression]
到你的模型类中,从而保证存储到数据库之前模型属性的有效性得到验证。你也能生成你自己的定制验证属性像这个比较酷的[CreditCard]validator)并将他们通过EF
Code First自动强制实施。这是一个在你的模型中验证属性值的简单方法。

 

使用IValidatableObject实施类级别模型验证

数据注释属性供了一种简单的方法来验证你的模型类中的单个属性值。

有些人问道:是否EF Code First也支持在模型对象上应用类级别验证方法,只管验证规则而不需要涉及很多属性值?
答案是肯定的——你有一个很简单的方法来实现:在你的模型类中实现IValidatableObject接口。

IValidatableObject.Validate()方法

IValidatableObject.Validate()方法能应用涉及多个属性的验证规则,并返回多方个验证错误。每个返回的验证结果都提供一个错误消息和一个导致验证冲突的候选属性名称列表(这对显示UI内的错误信息非常有用)。

 

强制自动验证

在实现了IvalidatableObject接口的模型对象被保存的时候,EF Code
First(自CTP5起)现在会自动调用Validate()方法。你无需写任何代码来实现它——现在这个是默认支持的。

这个新支持意味着下面违反了上面所说的一条商业规则的代码将在我们调用Northwind.DBContext的“SaveChanges()“方法的时候自动抛出一个异常(并中止事务)。

 

主动检查验证错误

除了相应地处理验证异常之外,EF Code First还允许你主动检查验证错误。自CTP5开始,
你能调用DbContext基类的GetValidationErrors()方法来返回一列被处理模型对象中的验证错误。GetValidationErrors()将返回所有验证错误——不管他们是通过数据批注属性(DataAnnotation Attribute)还是通过IValidatableObjectValidate()实现生成的。

 

原文网址:

http://msdn.microsoft.com/zh-cn/gg981920

posted @ 2011-06-25 20:01 http://angzi.cnblogs.com/ 阅读(364) 评论(0) 编辑

Razor尽量减少编写一个视图模板需要敲入的字符数,实现快速流畅的编程工作流。与大部分模板的语法不同,你不必在HTML中为了明确地标记出服务模块的开始和结束而中断编程。Razor解析器足够聪明,能从你的代码中推断出来。这使其简洁,富有表现力的语法输入干净,快速,有趣。

 

使用标记来识别代码中的内容块——是使Razor在涉及HTML生成的情况下简洁高效的一个重要因素。

 

用@明确表示内容的起始

然而不是所有的内容块都是以标记元开始,在有些案例中,Razor解析器不能隐式检测出内容块。

这就需要Razor通过在代码块中使用“@:字符序列”来显式指明内容块的开始。@:序列表明该行后面的内容应该被视为内容块:

 

在@:内容块中使用代码碎块(Code Nugget)

 

另外 ,Razor允许你用一个<text>元素 来显式标识内容:

 

<text>标签是一个 Razor
特殊处理的元素。Razor将<text>块的内部内容视为内容块,不呈现包含那些内容的<text>标签(这意味着只呈现<text>内部内容,不呈现标签本身)。这使呈现没有被HTML元素包装的多行内容块变得方便。


如果你想要更简洁的@: 序列,<text>元素也能根据需要用来标识单行内容.

 

总结

Razor启用一种简洁的模式化语法,实现非常流畅的编码工作流。 Razor能灵活地通过检测<tag>元素来识别内容块的起始,
从而让Razor方法在有HTML生成的场景中很有效,也使你不用明显地标注95% 的 if/else 和foreach 场景中内容块的开始/结束.

在当你不想在一个代码容器块中使用HTML元素,却需要更精确地标明一个内容块的边界时,你可以使用Razor的@:和<text>句法。

 

作者原文:

http://msdn.microsoft.com/zh-cn/gg981918

posted @ 2011-06-25 19:44 http://angzi.cnblogs.com/ 阅读(272) 评论(0) 编辑

介绍如何通过Razor使整个网站的布局变得简单。

 

  • 项目的\Views\Shared文件夹是通用视图文件、模版所放置的地方
  • 在布局文件中需要调用@RenderBody()方法
  • 在布局文件中需要用<title>@ViewBag.Title</title>输出Html的Title属性

  

     · 我们不需要将我们的主体内容包装在一个标记或元素中——Razor将默认自动将Index.cshtml中的内容视为布局页面的主体部分。如果我们的布局有几个可更换的区域,我们能选择性地定义“name sections”。但是Razor让90%的情况(你只需要有一个主体部分就可以了)超级干净而简练。

     · 上面我们编程设置了Index.cshtml页面中的View.Title的值。我们的Index.cshtml文件中的代码会比SiteLayout.cshtml中的代码先执行——这样我们就能编写视图代码编程设置需要被呈示到布局的值。对像设置页面的标题,和为搜索引擎优化内的<head>设置<meta>元素这样的事情,上面功能尤其有用。

     · 刚才我们在Index.cshtml页面内编程设置所用的布局模板。它也可以通过设置视图上的布局属性来实现(注意:在第一个预览版中,这个属性被称为“LayoutPage”——我们在ASP.NET MVC 3 Beta版中将其更名为“Layout”)。我将简单地介绍设置这个属性的几个替代方法。

 

      设置布局文件的方法:

      1.通过设置视图上的布局属性来实现:

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

      2.通过_ViewStart.cshtml文件一次性定义网站内所有视图的布局逻辑。

         _ViewStart.cshtml文件位于项目的\Views文件夹下,代码很简单:

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

      3.因为_ViewStart.cshtml允许我们编写代码,所以我们能有选择地让我们的布局选择逻辑比基本的属性设置更丰富。比如:我们能根据访问网站的设备的不同来使用不同的布局模板——有针对手机或tablet等这些设备的优化布局,针对PCs/笔记本的桌面优化布局。或者如果我们创建一个被不同的用户使用的CMS系统或通用共享应用,我们能根据访问网站的客户(或角色)的不同而选择不同的布局。

      这大大提高了用户界面的灵活用。允许你更容易地一次性编写视图逻辑,避免在不同的地方重复它。

      注意:你也能在一个控制器或操作筛选器重指定布局。这样如果你更愿意保留布局逻辑在那里,你也能那样做。

 

       更多高级内容

      人们经常问两个常见问题:

      1) 我能使用嵌套的布局文件吗?

      2) 在一个布局文件中,我们有多个非连续的可替换区域吗?——这样我就能在几处不同的地方填充我自己的视图文件。

      这两个问题的答案都是肯定的!

      文章网址:http://msdn.microsoft.com/zh-cn/gg981894

  

 

 

posted @ 2011-06-25 17:56 http://angzi.cnblogs.com/ 阅读(347) 评论(0) 编辑

2010年6月28日

    如果你喜欢编程,就会见到很程序员为Java和.NET争论不休。

    如果你喜欢摄影,还会看见很多色友为Nikon与Canon周而复始的打嘴仗。

    如果你也像我这么不幸,既喜欢编程,又喜欢摄影,呵呵,这世界简直太热闹了。

    不管是Java还是.Net,我们的目的是做出好用的软件。不管Nikon还是Canon,我们的目标是拍出的照片。有句话说“镜头固然重要,但镜头后面的那颗头更重要”,引申过来,不管用什么语言,编程的人更重要。不管是Java还是.Net,都不乏优秀的作品,只在这里喋喋不休的讨论两个平台孰优孰劣,在选择自己使用的平台之前或许有些价值,之后就没有必要了。语言和平台只是工具,要比就比自己的作品好不好,工具做得好不好是人家的事情。而且除了热门的两家外还有很多的选择,相机还有莱卡,语言还有C/C++,而且你尽可以集各家之长嘛。

    总之,要是你对自己用的平台或相机觉得满意,就继续使用;如果不满意,就给平台提供商提提建议让他改进,或者干脆换成其他的,没人会拦着你。一切决定都由你自己的头脑做出。

posted @ 2010-06-28 13:15 http://angzi.cnblogs.com/ 阅读(1046) 评论(4) 编辑

2009年1月31日

     方法(method):方法是一个规范过程,该过程用定义明确的符号来生成描述开发中的软件系统各个方面的一组模型。

     方法论(methodology):方法论是软件开发周期应用的方法的集合,这些方法还统一于某些一般的哲学方法。

     与软件系统复杂性的增长相对应,方法也在不断演化中。许多20世纪60年代提出的设计方法都提到了这个增长着的复杂性。其中最有影响的是自顶向下的结构化设计(也称“合成设计,composite design”)。这种方法直接受到传统的高级编程语言的拓扑结构的影响。在这些语言里,分解的最基本单元是子程序,而所得程序的形式是树结构,在这种结构中子程序通过调用其他子程序来完成自己的任务。这就是自顶向下的结构化设计采用的方法:利用算法分解将大的问题分为小步骤。

     由于结构编程的局限,之后人们又提出了几十种设计方法,大多数方法都可以归结为以下三种之一:

  • 自顶向下的结构化设计
  • 数据驱动设计
  • 面向对象设计

     自顶向下的结构化设计曾经是最为流行的设计方法,但是结构化设计并没有涉及到数据抽象和信息隐藏问题,也没有提供强档地方法解决并发性。结构化设计与极其复杂的系统的增长不成比例,而且此类方法并不适于与基于对象和面向对象的编程语言一起使用。

     数据驱动设计中,软件系统的结构由映射到系统的输入到输出导出。数据驱动设计被应用于大量的复杂领域,尤其是信息管理系统,它涉及到系统的输入和输出的直接关系,但对时间紧要的事件考虑很少。

     面向对象的分析和设计的根本概念是应将软件系统模拟为协作对象的集合,将单个对象看做类层次中一个类的实例。面向对象分析和设计直接反映了现今更高级的编程语言的拓扑结构。

 

posted @ 2009-01-31 22:42 http://angzi.cnblogs.com/ 阅读(164) 评论(0) 编辑

2009年1月29日

摘要: 很久看也不写了,今天清理一下空间,准备写一些东西了。阅读全文

posted @ 2009-01-29 18:31 http://angzi.cnblogs.com/ 阅读(33) 评论(0) 编辑

2007年1月20日

摘要: AUTOTRACE是Sql*Plus中的一个工具,可以显示所执行查询的解释计划(explain plan)以及所用的资源。
配置AUTOTRACE的方法不止一种,以下是Tom采用的方法:
(1)作为system登录SQL*Plus,运行[ORACLE_HOME]/rdbms/admin/utlxplan.sql
(2)创建一个表plan_table的同义词
(3)授权,使任何人都可以使用SQL*Plus进行跟踪,这样就不需要每个用户都安装自己的计划表。
(4)创建并授予plustrace角色:
AUTOTRACE会自动生成一个报告,通过设置AUTOTRACE系统变量可以控制这个报告:阅读全文

posted @ 2007-01-20 07:14 http://angzi.cnblogs.com/ 阅读(483) 评论(0) 编辑

2006年12月29日

摘要: 为什么我们就要使用 n(物理)层体系结构来构建系统?这是一篇基础性的文章,介绍了人们对于软件的一种理念,即当我们面对新项目时往往将系统明确地分为三个物理层次:表现层、业务逻辑层和数据访问或资源层。然而,对于循规蹈矩的做事方式应当重新审视。阅读全文

posted @ 2006-12-29 06:24 http://angzi.cnblogs.com/ 阅读(337) 评论(0) 编辑