2012-06-04 117 views
4

我不喜歡發表這樣一個普遍的問題,但我沒有看到很多關於這個話題的內容,所以我想知道是否有人做過這樣的事情,以及這是否是一個很好的實施方案。C#.Contains()檢查它是否爲URL

EDIT增加整個方法

下面是代碼

protected void gridViewAttachments_HtmlDataCellPrepared(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewTableDataCellEventArgs e) 
    { 
     //if (e.DataColumn.FieldName == "AttachmentName" && e.CellValue.ToString().ToLower().Contains("://")) 
     // attachmentUrl = e.CellValue.ToString(); 
     //if (e.DataColumn.FieldName == "AttachmentName" && !e.CellValue.ToString().ToLower().Contains("://")) 
     // attachmentUrl = "http://" + e.CellValue; 
     Uri targetUri; 
     if (Uri.TryCreate("http://" + e.CellValue, UriKind.RelativeOrAbsolute, out targetUri)) 
     { 
      attachmentUrl = new Uri("http://" + e.CellValue); 
     } 

     if (e.DataColumn is DevExpress.Web.ASPxGridView.GridViewDataHyperLinkColumn) 
     { 
      if (attachmentUrl.ToString() == "") 
      { 
       DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl hyperlink = 
        (e.Cell.Controls[0] as DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl); 
       hyperlink.Target = "_blank"; 
       hyperlink.NavigateUrl = ApplicationUrl + "/Attachment.ashx?key=" + hyperlink.Text; 
       hyperlink.Text = GetWords("GENERAL.VIEW_ATTACHMENT"); 
      } 
      else 
      { 
       DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl hyperlink = (e.Cell.Controls[0] as DevExpress.Web.ASPxEditors.Internal.HyperLinkDisplayControl); 
       hyperlink.Target = "_blank"; 

       hyperlink.NavigateUrl = attachmentUrl.ToString(); 
       hyperlink.Text = "Go to URL"; 
      } 
     } 
    } 

非常基本的,和它的作品。我的問題是:檢查字符串是否包含://足以檢查它是否是url?我必須檢查的原因是它從表格中提取數據,表格中的一些字段是文件名(mydoc.docx),在這種情況下,我將對它們執行其他操作。是否有另一個更強大的檢查,我可以在C#中完成?

+0

我認爲這是好的。因爲你只是想知道它是否開始於協議 – ivowiblo

回答

8

你可以使用Uri.TryCreate,而不是看是否URL的創建成功:

Uri targetUri; 
if (Uri.TryCreate("http://" + e.CellValue, UriKind.RelativeOrAbsolute, out targetUri)) 
{ 
    //success 
    attachmentUrl = "http://" + e.CellValue; 
} 
+0

我喜歡這個。尼斯趕上 – ivowiblo

+0

我喜歡這個解決方案,但我似乎無法得到它的工作。我會發布上面的整個事件,也許你可以告訴我在這裏做錯了什麼。 – ledgeJumper

+0

得到它的工作。太棒了,謝謝你! – ledgeJumper