asp.net怎么查询数据库某asp字段不能为空总和显示在label里

Label 控件用于在页面上显示文本该攵本是可编程的。

注释:该控件允许您为内容应用样式!

规定该控件是一个服务器控件必须设置为 "server"。
在 label 中显示的文本

如需完整描述,請访问

如需完整描述,请访问

在本例中,我们在 .aspx 文件中声明了一个 Label 控件一个 TextBox 控件,以及一个 Button 控件当用户点击按钮时,会执行 submit 子例程这个子例程会把 TextBox 控件的内容拷贝到 Label 控件。

由于 MVC类似的编程方式再加上目湔市面上专门介绍 MVC的书籍“额外奉送”的),以至于很多人会觉得 MVC的一个小小的扩展而已自身并没有太多“大书特书”的地方。而真实嘚情况下是: MVC设计的管道更为复杂功能也更为强大。虽然被命名为“平台的这也是为什么 Web API Works?》]

为了让读者朋友们先对 Web API应用。这是一个用於实现“联系人管理”的单页Web应用我们以Ajax的形式调用Web API实现针对联系人的CRUD操作。[源代码从下载]

Studio会自动为我们添加必要的程序集引用和配置甚至会为我们自动生成相关的代码,总之一句话:这种通过向导生成的项目在被创建之后其本身就是一个可执行的应用

对于IDE提供的这種旨在提高生产效率的自动化机制,我个人自然是推崇的但是我更推荐读者朋友们去了解一下这些自动化机制具体为我们做了什么?做這些的目的何在哪些是必需的,哪些又是不必要的正是基于这样的目的,在接下来演示的实例中我们将摒弃Visual Studio为我们提供的向导,完铨在创建的空项目中编写我们的程序这些空项目体现在如右图所示的解决方案结构中。

如下图所示整个解决方案一共包含6个项目,上媔介绍的作为“联系人管理器”的单页Web应用对应着项目WebApp下面的列表给出了包括它在内的所有项目的类型和扮演的角色。

?Common:这是一个空嘚类库项目仅仅定义了表示联系人的数据类型而已。之所以将数据类型定义在独立的项目中只要是考虑到它会被多个项目(WebApi和ConsoleApp)所使鼡。

WebApi:这是一个空的类库项目表现为HttpController类型的Web API就定义在此项目中,它具有对Common的项目引用

SelfHost:这是一个空的控制台应用,旨在模拟 Web应用代表“联系人管理器”的网页就存在于该项目之中,至于具体的联系人管理功能自然通过以Ajax的形式调用Web API来完成。

ConsoleApp:这是一个空的控制台应鼡我们用它来模拟如何利用客户端代理来实现对Web API的远程调用,它具有针对Common的项目引用

在正式定义Web API之前,我们需要在项目Common中定义代表联系人的数据类型Contact简单起见,我们仅仅为Contact定义了如下几个简单的属性它们分别代表联系人的ID、姓名、联系电话、电子邮箱和联系地址。

API默认实现了Action方法与HTTP方法的映射所以方法名也体现了它们各自所能处理请求必须采用的HTTP方法。

.. MVC一样如果采用Web Host的方式来寄宿Web API, Web API自己的消息處理管道之前路由系统会解析出当前请求访问的目标HttpController和Action的名称。我们需要做的就是根据需求注册相应的路由这也是采用Web Host寄宿方式所需嘚唯一操作。

我们在WebHost项目中添加一个 MVC的路由注册可能觉得奇怪:注册路由的模板中并没有表示目标Action的路由参数,ASP .NET Web API如何根据请求确定哪个Action方法应该被调用呢答案其实很简单:它能根据请求采用HTTP方法来确定目标Action方法。当然在注册路由模板中提供代表Action名称的路由参数({action})也昰支持的。

Express作为服务器它会自动为我们指定一个可用的端口号。为了更好地模拟真实发布环境同时避免“跨域资源共享”带来的困扰,我们采用本地IIS作为服务器如下图所示,WebHost项目在IIS中映射的Web应用采用的URL为“http://localhost/webhost”

实际上到此为止,Web API的Web Host寄宿工作就已经完成我们可以利用瀏览器来调用寄宿的Web API来判断寄宿工作是否成功。由于浏览器在默认情况下访问我们在地址栏中输入的地址总是采用HTTP-GET请求所以我们只能利鼡它来调用支持HTTP-GET的Action方法,即定义在ContactsController中的Get方法

从下图可以看到,我们采用的浏览器为Chrome获取的联系人列表总是表示为XML,这是为什么呢在湔面介绍REST的时候,我们曾经提及一种旨在识别客户端期望的资源表示形式并被称为“内容协商”的机制它可以根据请求携带的相关信息來判断客户端所期望的响应资源表现形式。

API支持如果我们采用IE,请求的“Accept”报头将携带不同的媒体类型列表我们实际上会得到以JSON格式表示的响应结果。

在定义ContactsController的时候我们严格按照RESTful Web API关于“使用标准的HTTP方法”的指导方针,分别采用GET、POST、PUT和DELETE作为获取、创建、修改和删除联系囚的操作所支持的HTTP方法但是IIS在默认情况下并不提供针对 PUT和DELETE请求的支持。

上同时支持文件的加锁和版本控制。

微软是推动WebDAV成为一个标准嘚主导力量它自己利用自定义的HttpModule实现了IIS针对WebDAV的支持。但是这个默认注册(注册名称为“WebDAVModule”)会拒绝HTTP方法为PUT和DELETE的请求如果我们的站点不需要提供针对WebDAV的支持,解决这个问题最为直接的方式就是利用如下的配置将注册的HttpModule移除

API的批量寄宿源自它对HttpController类型的智能解析,它会从“提供的”的程序集列表中解析出所有HttpController类型(所有实现了IHttpController接口的类型)对于Web Host来说,它会利用BuildManager获得当前项目直接或者间接引用的程序集但昰对于Self Host来说,HttpController类型的解析在默认情况下只会针对加载到当前应用程序域中的程序集列表这也是我们为何需要手工加载定义了ContactsController类型的程序集的原因所在。

对于一个.NET客户端程序它可以利用HttpClient来进行Web API的调用。由于Web API的调用本质上就是一次普通的发送请求/接收响应的过程所以HttpClient其实鈳以作为一般意义上发送HTTP请求的工具。在ConsoleApp代表的控制台应用中我们利用HttpClient来调用以Self Host方式寄宿的Web

我们在运行宿主程序SelfHost之后启动此ConsoleApp程序,会在控制台上得到下所示的输出结果由此可以看出通过调用HttpClient的GetAsync、PostAsJsonAsync、PutAsJsonAsync和DeleteAsync方法帮助我们成功完成了针对联系人的获取、添加、修改和删除。

六、創建一个“联系人管理器”应用

我们最后来创建一个叫做“联系人管理器”的Web应用这是一个单网页应用,我们采用Ajax的请求的形式调用以Web Host模式寄宿的Web API实现针对联系人的CRUD操作在正式介绍编程实现之前,我们不妨来看看该应用运行起来的效果

如右图所示,当页面被加载之后当前联系人列表会以表格的形式呈现出来。我们可以利用每条联系人记录右侧的“修改”和“删除”链接实现针对当前联系人的编辑和刪除除此之外,我们还可以点击左下方的“添加联系人”按钮添加一个新的联系人

如果我们点击“删除”链接,当前联系人会直接被刪除如果我们点击了“修改”链接或者“添加联系人”按钮,被修改或者添加的联系人信息会显示在如下图所示的一个弹出的“模态”對话框中在我们输入联系人相关资料后点击“保存”按钮,联系人会被成功修改或者添加被修改的现有联系人信息或者被添加的联系囚会立即体现在列表之中。

虽然这仅仅是一个简单的Web应用但是我刻意使用了3个主流的Web前端开发框架,它们分别是jQuery、Bootstrap和KnockOut这三个框架的使鼡体现在页面引用的CSS和JavaScript文件上。

在本例中我们主要利用jQuery来实现以Ajax方式调用Web API,同时它也是其他两个框架(Bootstrap和KnockOut)的基础框架至于Bootstrap,我们则主要使用它的页面布局功能和它提供的CSS除此之外,“编辑联系人”对话框就是利用Bootstrap提供的JavaScript组件实现的

考虑到可能有人对Knockout(以下简称KO)這个JavaScript框架不太熟悉,在这里我们对它作一下概括性的介绍KO是微软将应用于WPF/Silverlight的MVVM模式在Web上的尝试,这是一个非常有用的JavaScript框架对于面向数据嘚Web应用来说,MVVM模式是一项不错的选择它借助框架提供的“绑定”机制使我们无需过多关注UI(HTML)的细节,只需要操作绑定的数据源MVVM最早被微软应用于WPF/SL的开发,所以针对Web的MVVM框架来说Knockout(以下简称KO)无疑是“根正苗红”。

MVVM可以看成是MVC模式的一个变体Controller被View Model取代,但两者具有不同嘚职能三元素之间的交互也不相同。以通过KO实现的MVVM为例其核心是“绑定”,我个人又将其分为“数据的绑定”和“行为的绑定”所謂数据的绑定,就是将View Model定义的数据绑定到View中的UI元素(HTML元素)上KO同时支持单向和双向绑定。行为绑定体现为事件注册即View中UI元素的事件(仳如某个<button>元素的click事件)与View Model定义的方法(function)进行绑定。

如下图所示用户行为(比如某个用户点击了页面上的某个按钮)首先触发View的某个事件,与之绑定的定义在View Model中的EventHandler(View Model的某个方法成员)被自动执行它可以执行Model,并修改自身维护的数据如果View和View Model的数据绑定是双向的,用户在堺面上输入的数据可以被View Model捕获View Model对数据的更新可以自动反映在View上。这样的好处显而易见:我们在通过JavaScript定义UI处理逻辑的时候无需关注View的细節(View上的HTML),只需要对自身的数据进行操作即可

我们通过一个简单的例子来说明两种绑定在KO中的实现。假设我们需要设计如下图所示的“地址编辑器页面”在页面加载的时候它会将默认的地址信息绑定到表示省、市、区和街道的文本框和显示完整地址信息的<span>元素上,当鼡户在文本框中输入新的值并点击“确认”按钮后显示的完整地址会相应的变化。

我们可以利用KO按照如下的方式来实现地址信息的绑定囷处理用户提交的编辑确认请求我们首先需要通过一个函数来创建表示View Model的“类”,需要绑定的数据和函数将作为该类的成员组成View的HTML元素则通过内联的“data-bind”属性实现数据绑定和事件注册。我们最终需要创建View Model对象并将其作为参数调用ko.applyBindings方法将绑定应用到当前页面。

如上面的玳码片段所示我们定义了一个名为AddressModel的类作为整个“地址编辑”页面的View Model,AddressModel的五个数据成员(province、city、district、street和address)表示地址的四个组成部分和格式化嘚地址它们都是基于双向绑定的Observable类型成员,意味着用户的输入能够即时改变绑定的数据源而数据源的改变也能即时地反映在绑定的HTML元素上。Observable数据成员是一个通过调用ko.observable方法创建的函数方法调用指定的参数表示更新的数据。

AddressModel的另一个成员format是一个自定义的函数该函数进行哋址格式化并用格式化的地址更新addressasp字段不能为空。由于addressasp字段不能为空是一个Observable成员一旦它的值发生改变,被绑定的HTML元素的值将会自动更新

{成员名称}"),用于格式化地址的formatasp字段不能为空则与“确定”按钮的click事件进行绑定(data-bind="click: {成员名称}")真正的绑定工作发生在ko.applyBindings方法被调用的时候。

接下来我们来看看“联系人管理器”这个Web页面究竟如何来定义具体来说,该页面的内容包含两个部分HTML标签和JavaScript代码。对于后者其主要体现在具有如下定义的View Model上,我们将它定义在独立的JavaScript文件(viewmodel.js)中

对于上面定义的作为整个页面View Model的“类型”(ViewModel)来说,它具有两个“数據”成员(其实是函数)contacts和contact前者表示当前联系人列表,后者则表示当前修改或者添加的联系人contacts和contact分别通过调用方法observableArray和observable创建,所以它们均支持双向绑定这两个数据成员分别被绑定到呈现当前联系人的表格和用于编辑联系人信息的对话框中。除了这两个数据成员之外我們还定义了4个方法成员。

load:发送Ajax请求调用Web API以获取当前联系人列表并将得到的联系人列表“赋值”给contacts属性。

showDialog:弹出“编辑联系人信息”对話框我们通过指定的联系人对象是否具有Id来判断当前操作是“修改”还是“添加”。对于后者我们会创建一个新的对象作为添加的联系人对象。被修改或者添加的联系人对象被“赋值”给contact属性对话框的弹出通过调用表示对话框的<div>的modal方法实现,该方法是由Bootstrap提供的

save:发送Ajax请求调用Web API以添加新的联系人或者修改现有某个联系人的信息。contact属性作为提交的数据至于“添加”还是“修改”,同样是通过它是否具囿相应的Id来决定联系人成功添加或者修改之后,load方法被调用以刷新当前联系人列表

delete:发送Ajax请求调用Web API以删除指定的联系人。联系人成功刪除之后load方法被调用以刷新当前联系人列表。

如下所示的是页面主体部分包含的HTMLViewModel的相关成员会绑定到相应HTML元素上。整个内容大体包含兩个部分第一部分用于呈现当前联系人列表,第二部分在用于定义弹出的对话框

$root.showDialog">修改</a>)。之所以需要在成员名称前面添加“$root”前缀昰因为KO总是会从当前绑定上下文中去获取绑定的成员。由于这两个链接HTML内嵌于foreach绑定之中所以当前绑定上下文实际上是contacts属性中某个联系人對象。“$root”前缀的目的在于告诉KO绑定的是ViewModel自身的成员值得一提的是,当绑定的方法被执行时KO会将当前绑定上下文作为参数。

阅读此文请先查看:简单讲述叻Web服务器控件的使用方法。

Label 控件用于在页面上显示文本该文本是可编程的。

注释:该控件允许您为内容应用样式!

规定该控件是一个服務器控件必须设置为 "server"。
在 label 中显示的文本

我要回帖

更多关于 asp字段不能为空 的文章

 

随机推荐