Pages: 3/282 First page Previous page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Next page Final page [ View by Articles | List ]
Oct 8
MVC三个组成部分:Model 、View、Controller。今天主要想和大家分享的是View这一块。微软的MVC摒弃了之前的aspx页面的拖拖控件就能搞定的理念,因为发现那样会把程序员惯成傻子,而做出来的网站毫无性能可言,慢的像猪头!所以在展示页面View这一部分的操作几乎就是纯手工写html代码了。这对于程序员来说也挺苦恼的,因为从轻松拖控件直接升级为纯手工写代码(当然,可能难度不大,但是其中的麻烦是不可言喻的)。幸好微软推出了HtmlHelper,方便了我们写html代码,大大提高了效率。

  何为HtmlHelper?HtmlHelper也好SQLHelper也好,说白了就是把很多代码封装起来,然后供我们调用,用于节省开发时间,降低错误率。好了闲言少叙,开始正题;如果我们用MVC做一个简单的文章回复功能,View层中写一个TextBox一个TextArea一个Submit按钮,TextBox写标题TextArea写内容然后一点Submit就可以搞定了,这样看起来没什么问题。但是想一想如果在提交回复时出现了错误,没提交成功。按道理说在TextBox和TextArea中应该还保存刚才我们写的内容的,但是可惜View层中已经没有了ViewState。于是乎悲催的事情发生了,我们写了半天的评论,一点按钮,一个小错误没成功,回来后啥都没了,傻眼了!这样该怎么办呢?好办啊!在Controller里面给控件赋值不就可以了吗?想法很好,但可惜MVC模式中Controller操作View中的控件是犯法的!这怎么办?于是乎htmlhelper应运而生! 在View中将手写的TextBox和TextArea删掉,然后用HtmlHelper,具体代码如下:标题: <%:Html.TextBox("txtTitle","txtTitle") %>评论内容: <%:Html.TextArea("txtContent") %>这两个尖括号里里面的东西就是HtmlHelper了。以第一个为例:先写尖括号百分号然后是冒号,但是我们知道啊在WebForm时代,我们也这样在html里面加C#代码但是百分号后面往往是等号,那冒号和百分号的区别是什么呢?诸位可以试一下,冒号包裹的内容如果含有尖括号等的html标签,会识别出来。而等号不识别而是直接把内容显示出来。Html.TextBox里面的参数,第一个是该TextBox的Name属性,第二个是Value属性,当然还可以设置它的样式了 <%:Html.TextBox("txtTitle", "txtTitle", new { disable="none",....})%>大括号里面写属性,多个时用逗号隔开。在Controller里面可以通过ViewData["txtTitle"]进行取值和赋值。这样子一个HtmlHelper基本上就出炉了。

  当然有很多公司都有自己的HtmlHelper,然后今天就研究了一下,应该怎样写出自己的HtmlHelper,然后查看代码发现了所谓的每一个控件的HtmlHelper其实就是分别写一个类然后对HtmlHelper进行扩展,然后便写了一个扩展的类实现了一个特殊的Span标签的展示。具体方法如下:新建一个类,命名为SpanExtensions这个类是一个静态类,Public Static Class SpanExtensions  里面写一个方法,GetSpan方法,当然这也是一个静态方法,同时实现对HtmlHelper的扩展,还需要传入一个里面显示内容的参数具体代码如下:

public static string GetLabel(this HtmlHelper helper, string txt)  

  {            

            return string.Format("{0}", txt);

}

  这样在前面的View里面用Htmlhelper调用的时候发现没有,怪了,明明写了的,后来发现原来是SpanExtensions类的命名空间和View不一样,我想引用然后发现如果以后用这个方法的地方很多就太麻烦了,然后就直接把SpanExtensions的命名空间改为View的命名空间,然后就找到了,写完后一运行!发现:亲娘来,连html标签都出来了,难不成还得转?后来看了看HtmlHelper里面的TextBox发现返回值不一样,它的返回值是一个MvcHtmlString类型,啥东西啊?没见过!于是我就想把MvcHtmlString这个东西和String能够联系起来,后来整出来了,代码如下:  MvcHtmlString mc = MvcHtmlString.Create(string.Format("{0}", txt)); 这样直接返回mc就可以搞定了!
Oct 8


在 controller 中可以使用 ControllerContext 取得:



在 view 中可以使用 ViewContext:
Oct 1

 前一段时间想装一下sqlserver,但是一直装不上。搞得我很郁闷,我重装了一下系统。但是还是没有装上。 

     正好今天有时间,所以就尝试着把sqlserver装上。弄了半天,百度了很长时间,终于弄出来了。估计以后大家可能也会遇到,我也加深一下印象,所以记录了下来: 
      大致出错信息如下: 
    RebootRequiredCheck 检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。 失败 需要重新启动计算机。必须重新启动计算机才能安装 SQL Server。
 
检查出错:
 
Microsoft SQL Server 2008 Setup - System Configuration Check Report
 
Computer Name(s): JH 
Report Date/Time: 2010/11/25 19:16
Saved to Directory: C:Program FilesMicrosoft SQL Server100Setup BootstrapLog20101125_191528SystemConfigurationCheck_Report.htm
 
Rule Name
Rule Description
Result
Message/Corrective Action
 
GlobalRules: 针对规则组“GlobalRules”的 SQL Server 2008 安装程序配置检查
 
RebootRequiredCheck
检查是否需要挂起计算机重新启动。挂起重新启动会导致安装程序失败。
失败
需要重新启动计算机。必须重新启动计算机才能安装 SQL Server。
 
AclPermissionsFacet
检查 SQL Server 注册表项是否一致。
通过
SQL Server 注册表项是一致的,可以支持 SQL Server 安装或升级。
 
MediaPathLength
检查 SQL Server 安装媒体是否太长。
通过
SQL Server 安装媒体不太长。
 
OsVersionCheck
检查计算机是否满足最低操作系统版本要求。 
通过
该操作系统版本满足此产品的最低要求。
 
ThreadHasAdminPrivilegeCheck
检查运行 SQL Server 安装程序的帐户是否具有计算机的管理员权限。
通过
运行 SQL Server 安装程序的帐户具有计算机的管理员权限。
 
WmiServiceStateCheck
检查 WMI 服务是否已在计算机上启动并正在运行。
通过
Windows Management Instrumentation (WMI) 服务正在运行。
 
 
解决步骤:
a 、重启机器,再进行安装,如果发现还有该错误,请按下面步骤 
b、在开始->运行中输入regedit 
c、到HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager 位置 
d、在右边窗口右击PendingFileRenameOperations,选择删除,然后确认 
e、重启安装,问题解决 
如果还有同样问题,请检查其它注册表中是否有该值存在,如有请删掉
Sep 22
查询列表中数据丢失,每页10条
以下query全部数据正常
SELECT * FROM TABLE ORDER BY CREATETIME DESC

以下分配查询数据丢失
SELECT * FROM TABLE ORDER BY CREATETIME DESC LIMIT 0,10;
SELECT * FROM TABLE ORDER BY CREATETIME DESC LIMIT 10,10;

怀疑是CREATETIME相同导致分页问题
查看数据库果然发现有3条数据CREATETIME相同

解决:
CREATETIME 类型到毫秒
或者
CREATETIME update时间为不同
或者
增加主键参与排序
ORDER BY CREATETIME,id DESC
Sep 16
我们创造的你,既非圣物又非凡人,
既非永存又飞速朽
因此,你尽可按自己的意志,以自己的名义,
创造自己,建设自己,
我们仅仅让你能够按照自己的自由意志成长、发展。
你也许会蜕变成无理性的畜牲;
但是如果你愿意,也可以开创神圣的生命。
Sep 11

墓床 不指定

tommyhu , 15:13 , 读书 , Comments(0) , Trackbacks(0) , Reads(750) , Via Original
我知道永逝降临,并不悲伤

松林中安放着我的愿望

下边有海,远看像水池

一点点跟我的是下午的阳光

人时已尽,人世很长

我在中间应当休息

走过的人说树枝低了

走过的人说树枝在长
Tags:
Sep 11
如何变得有思想,
无非也是在这几个方面加强努力:
了解更多的背景知识,明确个人的价值观(也就是不要有模棱两可的态度,凡事追问自己到底是赞成还是反对,理由何在),培养自己的逻辑分析能力(方法之一就是多做数学题或者GRE逻辑题,或者多编程)
Highslide JS
Sep 11

软件架构(software architecture)就是软件的基本结构。

合适的架构是软件成功的最重要因素之一。大型软件公司通常有专门的架构师职位(architect),只有资深程序员才可以担任。

O'Reilly 出版过一本免费的小册子《Software Architecture Patterns》PDF), 介绍了五种最常见的软件架构,是非常好的入门读物。我读后受益匪浅,下面就是我的笔记。

一、分层架构

分层架构(layered architecture)是最常见的软件架构,也是事实上的标准架构。如果你不知道要用什么架构,那就用它。

这种架构将软件分成若干个水平层,每一层都有清晰的角色和分工,不需要知道其他层的细节。层与层之间通过接口通信。

虽然没有明确约定,软件一定要分成多少层,但是四层的结构最常见。

        
  • 表现层(presentation):用户界面,负责视觉和用户互动
  •     
  • 业务层(business):实现业务逻辑
  •     
  • 持久层(persistence):提供数据,SQL 语句就放在这一层
  •     
  • 数据库(database) :保存数据

有的软件在逻辑层和持久层之间,加了一个服务层(service),提供不同业务逻辑需要的一些通用接口。

Pages: 3/282 First page Previous page 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Next page Final page [ View by Articles | List ]