2013-03-03 91 views
0

我有一個控制器,檢查url列表並返回httpstatus代碼,描述和消息到視圖。每次我調試我的解決方案時,它都會經歷url列表,但它只返回第一個url的狀態。從控制器傳遞值的重複列表,以查看在Asp.net mvc 4

我該如何返回所有url列表的狀態?這裏是我的示例代碼

 { 

     string[] urls = { 
     "http://www.google.com","http://www.34q34adf.com","http://aldlfaldkfk.com","http://www.bbc.com" 

         }; 

     foreach (string url in urls) 

     { 
      try 
      { 


       HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); 


       HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); 

       ViewBag.status_code = ((int)myHttpWebResponse.StatusCode); 
       ViewBag.status_desc = myHttpWebResponse.StatusDescription; 
       var current_code = ((int)myHttpWebResponse.StatusCode); 

       if (current_code == 200) 
       { 
        ViewBag.Image = "Images/green_light.png"; 
        ViewBag.AlertType = "alert-success"; 
       } 

       myHttpWebResponse.Close(); 

      } 
      catch (WebException e) 
      { 
       string message = e.Message; 

       if (e.Status == WebExceptionStatus.ProtocolError) 
       { 
        HttpWebResponse hwr = (HttpWebResponse)e.Response; 

        ViewBag.status_code = ((int)hwr.StatusCode); 
        ViewBag.status_desc = hwr.StatusDescription; 
        var current_code = ((int)hwr.StatusCode); 
        ViewBag.status_desc = hwr.StatusDescription; 
        if (current_code != 200) 
        { 
         ViewBag.Image = "Images/red_light.png"; 
         ViewBag.AlertType = "alert-error"; 
        } 
       } 
      } 
      catch (Exception e) 
      { 
       ViewBag.message = e.Message; 
      } 
     } 

     return View(); 
    } 

我該如何讓我的視圖顯示所有網址的狀態?任何幫助將真正被讚賞。

回答

1

您應該創建一個ViewModel來保存url及其狀態並將其列表傳遞給視圖。

public class URLStatusVM 
{ 
    public string URL { set;get;} 
    public string Status { set;get;} 
} 

和動作方法

public ActionResult CheckIt() 
{ 
    List<URLStatusVM> urlList=new List<URLStatusVM>(); 

    string[] urls = {"http://www.google.com","http://www.aaa.com"} 
    foreach (string url in urls) 
    { 
    //Check the status using HttpWebRequest call here 

    //Create an object of our view model and set the property values 
    var item=new URLStatusVM(); 
    item.URL=url; 
    item.Status="Some status text"; //replace with the status from web call 

    //now add to our list 
    urlList.Add(item); 

    //your foreach loop ends here 
    } 
    return View(urlList); 
} 

現在使你的觀點強類型來URLStatusVM類的集合。

@model List<URLStatusVM> 

@foreach(var item in Model) 
{ 
<p> @item.URL </p> 
<p> @item.Status </p> 
} 
+0

嗨非常感謝您的解決方案! – 2013-03-03 04:08:17

+0

@BikiWiki:你是最受歡迎的。很高興我能幫上忙。 :) – Shyju 2013-03-03 04:41:55

相關問題