www.baike369.com
百科369 > ASP.NET教程 > 使用ASP.NET参数对象

使用ASP.NET参数对象


使用ASP.NET参数对象

ASP.NET参数对象具有下面的属性:

  • ConvertEmptyStringToNull:当值为真时,如果参数表示一个空字符,在相关命令执行以前,这个空字符将被转换为null值。
  • DefaultValue:如果参数的值是null,DefaultValue中的值将作为参数值。
  • Direction:参数的方向。可以为Input、InputOutput、Output和ReturnValue。
  • Name:参数名称。ASP.NET参数名称不能以@字符开头。
  • Size:参数的数据大小。
  • Type:参数的.NET Framework类型。该属性的值可以为TypeCode枚举值。

ASP.NET参数对象可以显式地声明一些参数属性,例如参数的类型、大小和默认值。


实例1

在ShowDetailsView.aspx网页中包含一个绑定到SqlDataSource控件的DetailsView控件。使用该页面可以更新Movies数据库表。程序代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowDetailsView.aspx.cs" Inherits="ShowDetailsView" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>没有显式声明ASP.NET参数对象-www.baike369.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    <asp:DetailsView
        id="dtlMovie"
        DataKeyNames="Id"
        DataSourceID="srcMovies"
        AutoGenerateEditButton="true"
        DefaultMode="Edit"
        AllowPaging="true"
        runat="server">
    </asp:DetailsView>

    <asp:SqlDataSource
        id="srcMovies"
        ConnectionString="<%$ ConnectionStrings:Movies %>"
        SelectCommand="Select * FROM Movies"
        UpdateCommand="UPDATE Movies SET Title=@Title,Director=@Director,DateReleased=@DateReleased WHERE Id=@id"
        Runat="server">
    </asp:SqlDataSource>

    </div>
    </form>
</body>
</html>

执行结果如下:

没有显式声明ASP.NET参数对象的操作效果

在ShowDetailsView.aspx页面中,没有显式声明ASP.NET参数对象。在SqlDataSource控件的更新命令执行以前,DetailsView控件就自动创建了ADO.NET参数,并将此参数添加到SqlDataSource控件的更新命令中。


实例2

如果需要清楚地定义SqlDataSource控件所使用参数的数据类型和大小,可以对参数进行声明。

在ShowDetailsViewExplicit.aspx网页中声明执行更新命令时的每个参数。程序代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ShowDetailsViewExplicit.aspx.cs" Inherits="ShowDetailsViewExplicit" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>在SqlDataSource控件中声明执行更新命令时的每个参数-www.baike369.com</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:DetailsView
        id="dtlMovie"
        DataKeyNames="Id"
        DataSourceID="srcMovies"
        AutoGenerateEditButton="true"
        DefaultMode="Edit"
        AllowPaging="true"
        runat="server">
    </asp:DetailsView>
    <asp:SqlDataSource
        id="srcMovies"
        ConnectionString="<%$ ConnectionStrings:Movies %>"
        SelectCommand="Select * FROM Movies"
        UpdateCommand="UPDATE Movies SET Title=@Title,Director=@Director,DateReleased=@DateReleased WHERE Id=@id"
        Runat="server">
        <UpdateParameters>
          <asp:Parameter Name="Title" Type="String" Size="100" DefaultValue="Untitled" />
          <asp:Parameter Name="Director" Type="String" Size="100" DefaultValue="Alan Smithee" />
          <asp:Parameter Name="DateReleased" Type="DateTime" />
          <asp:Parameter Name="id" Type="int32" />
        </UpdateParameters>
    </asp:SqlDataSource>
    </div>
    </form>
</body>
</html>

执行结果如下:

在SqlDataSource控件中声明执行更新命令时的每个参数的操作效果

在ShowDetailsViewExplicit.aspx页面中,更新命令使用的每一个参数都进行了显式声明。例如,参数DataReleased被声明为DateTime类型。

如果没有显式声明参数的类型,则默认为字符串。

另外,Title和Director参数都使用默认值。如果编辑电影记录时没有赋值,则会使用默认值。


提示

在另一种情况下,如果需要确定参数顺序,显式声明参数对象也是很有用的。例如,在使用OLE DB连接提供程序连接Microsoft Access时,参数的顺序就很重要。

Copyright© 2011-2016 www.baike369.com All Rights Reserved