ASP.NET程式中常用編程代碼(二)

來源:互聯網
上載者:User
asp.net|編程|程式

1、綁定在DataList中的DropDownList

private void dlistOrder_EditCommand(object source, System.Web.UI.WebControls.DataListCommandEventArgs e)
{
 //綁定訂單狀態
 for(int i=0;i<((DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlFlag")).Items.Count;i++)
 {
  if(((DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlFlag")).Items[i].Value == dv.Table.Rows[0]["OrStatus"].ToString())
  {
   ((DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlFlag")).Items[i].Selected = true;
  }
 }
}

2、另一種綁定方式

//綁定發貨方式
    DataView shipType = OrderSO.GetShipTypeList();
    DropDownList ddlShipType = (DropDownList)dlistOrder.Items[e.Item.ItemIndex].FindControl("ddlShipType");
    ddlShipType.DataSource = shipType;
    ddlShipType.DataTextField = "StName";
    ddlShipType.DataValueField = "StId";
    ddlShipType.DataBind();
    ddlShipType.SelectedIndex = ddlShipType.Items.IndexOf(ddlShipType.Items.FindByValue(dv.Table.Rows[0]["OrShipType"].ToString()));

3、在編輯嵌套在Datalist內的Datagrid某條記錄時定位它所在的Datalist行

protected void MyList_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
  {
   if(e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
   {
    HtmlInputHidden odid  = (HtmlInputHidden) e.Item.Cells[0].FindControl("odid");

    DataListItem item = (DataListItem)e.Item.Parent.Parent.Parent;
    DropDownList flag = (DropDownList)item.FindControl("ddlFlag");
    if(flag.SelectedIndex == 0)
    {
     if(e.CommandName == "Delete")
     {
      int iOdId = Convert.ToInt32(odid.Value);
      //刪除訂單明細方法
      OrderSO.DeleteOrderDetail(iOdId);
     }
    }
    else
    {
     GDCIC.Framework.Utility.MessageBox(this,"modifyError","經過確認的訂單不能再修改!!");
     return;
    }

    dlistOrder.EditItemIndex = -1;
    BindData();
   }
  }

4、DataBinding綁定運算式:

1) 普通的綁定運算式
<%# DataBinder.Eval(Container.DataItem, "ContactName") %>

2) 文本+綁定運算式
<asp:Label id=lblDate runat="server" Text='<%# "[" + DataBinder.Eval(Container, "DataItem.NewsCreatedate") + "]" %>' ForeColor="Red"></asp:Label>

3) 同時帶有顯示格式的綁定運算式
<%# DataBinder.Eval(Container,"DataItem.USActiveDate","{0:yyyy-MM-dd}") %>

4) 結合綁定運算式和模態框
<A href='<%# ShowModalWin(Convert.ToString(DataBinder.Eval(Container.DataItem, "PictureImage")),Convert.ToString(DataBinder.Eval(Container.DataItem, "DetailID")),Convert.ToString(DataBinder.Eval(Container.DataItem, "PictureID")))%>'>

其中:後台代碼檔案中ShowModalWin()方法的定義如下:
protected string ShowModalWin(string PictureImage,string DetailID,string PictureID)
{
 return " window.showModalDialog(\"Customers/ShowPictureInfo.aspx?pid="+PictureImage+"&did="+DetailID+"&id="+PictureID+"\",\"\",\"dialogHeight:320px;dialogWidth:480px;center:yes;help:no;status:no;scroll:no\");";
}

或者將參數提取出來單獨定義成一變數:
const string WINDOWPARAMSTRING="dialogWidth:540px;dialogHeight:420px;help:0;status:0;resizeable:1;scroll:no";

Page.RegisterStartupScript("functionscript","<script language='javascript'>window.showModalDialog('EditUserService.aspx?URID="+iURID+"','','"+WINDOWPARAMSTRING+"')</script>");

 

5、在已有的資料集中添加一個新行

int iURID=int.Parse(Session[Globals.USER_ID_SESSION_NAME].ToString());
DataSet myds=UserSO.GetMapUserServiceToServiceList(iURID);

//增加一個郵件行
DataRow mydr = myds.Tables[0].NewRow();
mydr["SVHref"] = "http://211.155.23.77";
mydr["SVName"] = "政務郵箱";
mydr["USEndDate"] = System.DateTime.Now.AddDays(1);
myds.Tables[0].Rows.Add(mydr);

DataView mydv=myds.Tables[0].DefaultView;
if(myds.Tables[0].Rows.Count!=0)
{
 mydv.RowFilter=" USEndDate>'"+System.DateTime.Now+"'";// 沒到期
 dgUserService.Visible=true;
 dgUserService.DataSource =mydv;

 try
 {
  dgUserService.DataBind();
 }
 catch
 {
  dgUserService.CurrentPageIndex =dgUserService.PageCount -1;
  dgUserService.DataBind();
 }   
}
else
{
 dgUserService.Visible=false;
}

6、加入用戶端驗證控制項

//驗證空值
<asp:requiredfieldvalidator id="valUsername" runat="server" controltovalidate="txtUsername" display="None" errormessage="請輸入使用者名稱 !!"></asp:requiredfieldvalidator>

//驗證網址
<asp:regularexpressionvalidator id="rev" runat="server" ErrorMessage="公司網址不合法[要有http://] !" Display="None" ControlToValidate="txtCPWebsite" ValidationExpression="http://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"></asp:regularexpressionvalidator>

//驗證郵箱
<asp:RequiredFieldValidator id="rfv" runat="server" ControlToValidate="txtCPEmail" Display="None" ErrorMessage="請輸入電子郵箱 !!"></asp:RequiredFieldValidator>

//驗證郵編
<asp:regularexpressionvalidator id="rev5" runat="server" ErrorMessage="郵遞區號不合法 !" Display="None" ControlToValidate="txtCPPostCode" ValidationExpression="\d{6}"></asp:regularexpressionvalidator>

//顯示錯誤資訊
<asp:validationsummary id="vs" runat="server" ShowSummary="False" ShowMessageBox="True"></asp:validationsummary>

7、枚舉類型的使用

1) 定義:
public enum UserTypeEnum:byte
{
 /// <summary>
 /// 個人使用者
 /// </summary>
 Individual = 0,
       
 /// <summary>
 /// 單位使用者
 /// </summary>
 Corporation = 1
}

2) 在代碼中的使用方法:
UserTypeEnum ut = UserTypeEnum.Corporation;
GDCIC.Entities.UserVO userVO = GDCIC.Facade.UserSO.GetUserVO(urid);

ut = (UserTypeEnum)Enum.Parse(UserTypeEnum.Corporation.GetType(),userVO.URUserType);
if (ut == UserTypeEnum.Corporation)
{
    ... ...
}

//直接獲得其代表的值的方法
Response.Write("枚舉值為:"+Convert.ToInt32(UserTypeEnum.Individual));

8、驗證使用者名稱必須以字母打頭且不能含有中文

String sUsername = txtUsername.Text.Trim();
if(!Regex.IsMatch(sUsername, "^[A-Za-z].*"))
{
    Utility.MessageBox(this,"nameFormatError","使用者名稱要以字母開頭, 且不要用中文名稱 !!");
    return;
}

9、如何在刪除並重新安裝 IIS 之後修複 IIS 映射

運行 Aspnet_regiis.exe 工具 + 生產力:

1、

單擊“開始”,然後單擊“運行”。
在“開啟”框中,鍵入 cmd,然後按 Enter 鍵。
在命令提示字元下鍵入以下命令,然後按 Enter 鍵:
 "%windir%\Microsoft.NET\Framework\版本\aspnet_regiis.exe" -i
2、在此路徑中,版本代表在伺服器上安裝的 .NET Framework 的版本號碼。鍵入此命令時,必須將此預留位置替換為實際版本號碼。

註冊 Aspnet_isapi.dll;
單擊“開始”,然後單擊“運行”。
在“開啟”文字框中,鍵入以下內容,然後按 Enter 鍵:
 regsvr32 %windir%\Microsoft.NET\Framework\版本\aspnet_isapi.dll
Regsvr32 將返回註冊結果。

10、下載檔案的方法:

Response.AppendHeader("content-disposition", "attachment; filename=" + Request.Params("link").ToString)
Response.ContentType = Request.Params("contenttype").ToString
Response.WriteFile(strLink)
Response.End()

可從資料中讀出檔案名稱,直接指定到伺服器的路徑下即可,所以要求上傳檔案時`需求指定檔案在伺服器上儲存的路徑。

對於此方法,需要重新導向到一個頁面,此頁面負責處理檔案的寫入。參數contenttype可以選擇寫或不寫,在明確的情況下,最好寫入。

但appendheader必須寫明,最後調用WriteFile將檔案輸出,用到的路徑是相對路徑。

11、如何在動態載入控制項時,讓用戶端指令碼起作用

event.srcElement,可以得到事件引發者對象。對於要求引用多個對象時,可以用一變數將控制項值儲存起來。

方法如下:
    Response.Write("<input type=\"hidden\" id=\"jjj\" value="+this.ClientID+">");
    註:此處此控制項的ID號為固定值。

12、如何在IIS上註冊aspnet

aspnet_regIIS -i

13、Server對象

1) Server.Transfer: 轉到另一頁面,但沒有向瀏覽器發送任何資訊,當使用者重新整理時,將重新整理的是重新導向之前的那一頁。
2) Server.Execute: 執行另一頁面的請求,執行之後返回原來的頁面。

14、禁用請求驗證的方法

請求驗證過程檢測到有潛在危險的用戶端輸入值,對請求的處理已經中止。該值可能指示危及應用程式安全的嘗試,如跨網站的指令碼攻擊。通過在 Page 指令或 配置節中設定 validateRequest=false 可以禁用請求驗證。但是,在這種情況下,強烈建議應用程式顯式檢查所有輸入。

如:<system.web>
 <pages ValidateRequest="false" />
</system.web>

 



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。