分类目录归档:WEB

NHibernate 中使用 nvarchar(max) 类型 – 冠军

在 NHibernate 中使用字符串类型,默认会映射到字符类型,在 SQLServer 中,NVARCHAR 类型最大长度是 4000 字符,如果超过 4000,比如使用 SQL Server 中的 nvarchar(max),那么就需要特别配置。

比如说,我们在实体中定义了一个名为 Content 的字段。

public virtual string Content { set; get; }

默认情况下,对应的数据库字段定义会自动生成为

Content NVARCHAR(255) null

如果我们希望它的长度是 NVARCHAR(MAX) 怎么办呢?

很容易找到的说明是使用 StringClob 类型,这是 NHibernate 内部定义的一个类型,用来说明这个字段是一个长字符串类型,你的字段属性是字符串类型?没有问题,NHibernate 知道这一点的,你完全不用修改你的实体定义。

<property name=”Content” type=”StringClob” />

那么,你就会看到现在对应的数据库字段定义修改为了你的目标。

Content NVARCHAR(MAX) null

 StringClob 太诡异了,你不想使用这个办法,其实也可以直接指定数据库中的字段类

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

NHibernate 中使用 nvarchar(max) 类型 – 冠军

在 NHibernate 中使用字符串类型,默认会映射到字符类型,在 SQLServer 中,NVARCHAR 类型最大长度是 4000 字符,如果超过 4000,比如使用 SQL Server 中的 nvarchar(max),那么就需要特别配置。

比如说,我们在实体中定义了一个名为 Content 的字段。

public virtual string Content { set; get; }

默认情况下,对应的数据库字段定义会自动生成为

Content NVARCHAR(255) null

如果我们希望它的长度是 NVARCHAR(MAX) 怎么办呢?

很容易找到的说明是使用 StringClob 类型,这是 NHibernate 内部定义的一个类型,用来说明这个字段是一个长字符串类型,你的字段属性是字符串类型?没有问题,NHibernate 知道这一点的,你完全不用修改你的实体定义。

<property name=”Content” type=”StringClob” />

那么,你就会看到现在对应的数据库字段定义修改为了你的目标。

Content NVARCHAR(MAX) null

 StringClob 太诡异了,你不想使用这个办法,其实也可以直接指定数据库中的字段类

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

angularjs 指令详解 – template, restrict, replace – 冠军

通过指令机制,angularjs 提供了一个强大的扩展系统,我们可以通过自定义指令来扩展自己的指令系统。

怎样定义自己的指令呢?

我们通过 Bootstrap UI 来学习吧。这个项目使用 angularjs 将 Bootstrap 3 进行了封装,是我们学习 angularjs 很好的样例。

从 Alert 开始

首先,我们从比较简单的 alert 指令来开始学习。

在 Bootstrap 中,警告框使用类 alert 来表示, 通过 alert-success, alert-info, alert-warning, alert-danger 来表示不同类型的警告。

<div class=”alert alert-success”></div>
<div class=”alert alert-info”></div>
<div class=”alert alert-warning”></div>
<div class=”alert alert-danger”></div>

对于可关闭的警告框来说,还可以用一个可选的.alert-dis

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

angularjs 指令详解 – template, restrict, replace – 冠军

通过指令机制,angularjs 提供了一个强大的扩展系统,我们可以通过自定义指令来扩展自己的指令系统。

怎样定义自己的指令呢?

我们通过 Bootstrap UI 来学习吧。这个项目使用 angularjs 将 Bootstrap 3 进行了封装,是我们学习 angularjs 很好的样例。

从 Alert 开始

首先,我们从比较简单的 alert 指令来开始学习。

在 Bootstrap 中,警告框使用类 alert 来表示, 通过 alert-success, alert-info, alert-warning, alert-danger 来表示不同类型的警告。

<div class=”alert alert-success”></div>
<div class=”alert alert-info”></div>
<div class=”alert alert-warning”></div>
<div class=”alert alert-danger”></div>

对于可关闭的警告框来说,还可以用一个可选的.alert-dis

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

在 angularjs 中集成 bootstrap typeahead – 冠军

问题

在使用 typeahead 的时候,有这样一个需求,当用户选中其中一项的之后,将项目对应的 id 保存到另外一个变量中,以后在提交表单的时候,将这个 id 发送到服务器中。

但是,在 typeahead 中对于元素的操作,angularjs 没有感知到,导致不能获取最新的数据。

typeahead 中选择数据之后的事件 itemSelected

在 typeahead 中,我们可以定义一个 itemSelected 的事件处理函数,在选中一个项目之后, typeahead 会触发这个事件,我们在这个事件中可以获取当前选中的元素,对应的值,已经显示的提示文本。

这个函数的使用方式如下:

itemSelected: function (item, val, text) {
console.info(val);
}

集成到页面中,我们可以如下配置 typeahead 的配置参数。

var option = {
ajax: {
url:
‘@Url.Action(“AjaxService”)’,
timeout:
300,
method:
“post”,
triggerLength:
3,
preDispatch:

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

使用升级版的 Bootstrap typeahead v1.2.2 – 冠军

上次介绍了 Bootstrap 2 中附带的 typeahead,功能强大,但是使用起来不太方便,作者 Terry Rosen 已经升级了一个新版本 v1.2.2,作出了很大的改进。

下载地址

https://github.com/tcrosen/twitter-bootstrap-typeahead

使用环境

  • Twitter Bootstrap 2.0+
  • jQuery 1.7+

页面准备

<link href=”/path/to/bootstrap.css” rel=”stylesheet”>
<script src=”/path/to/jquery.js” type=”text/javascript”></script>
<script src=”/path/to/bootstrap-typeahead.js” type=”text/javascript”></script>

脚本

$(myElement).typeahead(options);

事件

事件说明grepperFilters relevant results from the source.highlighterHighlights any matching results in

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

关于 ASP.NET MVC 中的视图生成 – 冠军

在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据。

从控制器到视图

通常,在 Controller 中,我们定义多个 Action ,每个 Action 的返回类型一般是 ActionResult,在 Action 处理的最后,我们返回对于视图的调用。

public ActionResult Index()
{
return this.View();
}

默认情况下,将会调用与 Action 同名的视图,比如,在上面的 Action 中,将会使用名为 Index 的视图。

如果我们传递了一个字符串参数,那么,这个字符串就回被视为视图的名称,例如,我们希望使用名为 IndexView 的视图进行呈现,那么,可以如下完成。

public ActionResult Index()
{
return this.View(IndexView);
}

布局与视图

MVC 会直接去找我们的视图吗?不会!

从 Action 返回之后,首先,MVC 会在 Views 文件夹下查看是否存在一个名为 _ViewStart.cshtml 的特殊文件,如果存在的话,就回执

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

翻译:Knockout 快速上手 – 5: 你需要知道的顶级特性 续 – 冠军

Utilities

Knockout 提供了许多可以你开发中使用的工具,你可以在 ko.utils 命名空间中找到它们,我最喜欢的工具如下所示:

  • extend: 这个方法将两个对象合并在一起,调用这个方法之后,会将第二个对象的所有属性,方法合并到第一个对象上。
  • unwrapObservable: 这个方法获取一个属性作为参数,然后返回它的值。比如 Knockout 的 Observable 属性,或者一个简单的属性。这个函数在你希望在运行时获取对象的实际值得时候很有用。
  • 所有的数组工具:Knockout 提供了许多对于数据操作的工具,允许你过滤,映射,或者删除其中的项目。我经常在项目开始的时候,将这些方法附加到ko.observableArray.fn 上。

下面的代码演示了使用方法。

// extend usage
var a = { val: 1 },
b
= { val: 2 };

ko.utils.extend(a, b);
console.log(a.val); // console: 2

// unwrapObservable usage
var c = ko.observable(99), d = 98;
console.log(ko.utils.unwrapObservable(c));
//

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

翻译:Knockout 快速上手 – 4: 你需要知道的顶级特性 – 冠军

Knockout 最棒的一个特点就是它的可扩展性。Knockout 存在大量的扩展点,包含大量的工具来创建我们的应用程序。许多开发者除了 Knockout 核心库之外没有使用任何其他的脚本库 ( 甚至包括 jQuery ) 就创建了非常棒的站点。

Subscribables

在创建我们的库存管理程序的时候,很容易发现在 Knockout 中 Observable 是一个核心对象。在 Observable,ObservableArray 和 Computed Observables 的底层是 Subscribable,Subscribable 是包含三个方法和一个 Subscriptions 数组的对象,这三个方法是:

  • subscribe:这个方法添加一个订阅到主题对象上,当订阅的主题发出提醒的时候,订阅就会被调用,默认的提醒类型是 change。
  • notifySubscribers:这个方法调用所有的订阅,并且会传递一个参数到订阅的回调方法中。
  • extend:这个方法为主题对象添加一个扩展

下面的代码演示了前两个方法的使用,实现了发布和订阅。

var test = ko.observable();

// create a subscription for the “test-event”

test.s

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到:

翻译:Knockout 快速上手 – 3: knockoutJS 快速上手 – 冠军

许多时候,学会一种技术的有效方式就是使用它解决实际中的问题。在这一节,我们将学习使用 Knockout 来创建一个常见的应用,库存管理应用。

应用概览

在创建我们的应用之前,我们需要一个公司,来理解应用解决的问题。我们的应用将能够完成下列任务:

  • 浏览公司销售的每种产品,跟踪 SKU 数量和说明。
  • 对每种产品的价格,费用和数量进行赋值。
  • 当公司决定销售某种新产品的时候,可以创建新的产品。
  • 当公司停售某种产品的时候,可以删除这种产品。

 

第一步 定义命名空间

在我们实际开始开发应用之前,很重要的一个问题就是规划我们如何组织我们的程序,将我们应用的代码与浏览器界面和本地函数进行分离。你可能奇怪对于这么小的应用我们为什么要这么做。对于 JavaScript 应用的最佳实践来说,这么做无论如何都是非常重要的。通过命名空间,即使对于一个很小的应用来说,在以后随着应用的不断扩展,也可以确保容易进行维护,并且与第三方的组件进行分隔。( 例如许多的脚本插件 )

我们将在前面创建的 app.js 中定义我们的命名空间。下面代码就是定义定名空间的代码。

// Define the namespace

window.myApp = {};

 

第二步 创建模型

我们创建的第一个模型将用来表示我们的产品对象。我们通过

阅读全文

本条目发布于。属于.NetWEB分类。作者是
分享到: