2011-07-01 51 views
0

由於某種原因,我的Html幫助程序無法識別。ASP.NET MVC 3 Html幫助程序無法識別

@using System.Data.SqlClient 
@using System.Data 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Site Visits</title> 
</head> 
<body> 
    <div> 
     @{ 
      public string GetSiteVisits() 
      { 
       DataTable dt = new DataTable(); 
       SqlDataAdapter sda = new SqlDataAdapter(
        "SELECT numVisits FROM tblSiteVisits WHERE IPAddress='" + Request.UserHostAddress + "'", 
        new SqlConnection("Data Source=*****;Initial Catalog=*****;Persist Security Info=True;User ID=*****;Password=*****;MultipleActiveResultSets=True")); 

       sda.Fill(dt); 

       string table = "<table><tr>"; 

       foreach (DataColumn dc in dt.Columns) 
       { 
         table += "<th>" + dc.ColumnName + "</th>"; 
       } 

       table += "</tr>"; 

       foreach (DataRow dr in dt.Rows) 
       { 
        table += "<tr>"; 

        foreach (Object o in dr.ItemArray) 
        { 
         table += "<td>" + o.ToString() + "</td>"; 
        } 

        table += "</tr>"; 
       } 

       table += "</table>"; 

       return table; 
      } 
     } 
     <div> 
      @Html.Raw(GetSiteVisits()) 
     </div> 
    </div> 
</body> 
</html> 

有人知道如何解決它嗎?

+16

你爲什麼要在視圖中進行模型的工作? – 48klocs

+0

我只需要修復。 –

+0

爲什麼你使用MVC如果你不打算遵循這種模式? – sellmeadog

回答

2

您需要導入命名空間:

@using System.Data.SqlClient 
@using System.Data 
@using Mine.MyHtmlHelper.MyNameSpace // Here!! 
+0

這不能解決 –

5

編寫HTML輔助的方法是 在助手返回的字符串。

<html> 
     <body> 
      <div> 
       @GetSiteVisits() 
     </div>  
     </body> 
    </html> 
    @helper GetSiteVisits() 
    { 
     @Html.Raw("hello"); 
    } 
1

確保這是你的web.config文件(可能是根,以及在〜/瀏覽文件夾):

<system.web> 
    <compilation debug = "true" targetFramework = "4.0"> 
     <assemblies> 
      <add assembly = "System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly = "System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly = "System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly = "System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
      <add assembly = "System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
     </assemblies> 
    </compilation> 
</system.web> 

重要的線其實只是System.Web.Mvc, ...

2

函數GetSiteVisits()需要在您的控制器中,而不是視圖。該方法生成的數據(從數據庫讀取)然後進入傳遞給視圖的視圖模型。在粗糙的僞代碼,它應該是這樣的:

型號

public class IPVisits 
{ 
    public string IPAddress { get; set; } 
    public int NumVisits { get; set; } 
} 

視圖模型

public class SiteVisitsViewModel 
{ 
    public List<IPVists> Visits { get; set; } 
} 

控制器

// SiteVisits method only 
public ActionResult SiteVisits(string id) 
{ 
    // Get the data for the UserHostAddress 
    list = Repository.GetTheDataInListForm(id); 
    return View(list); 
} 

查看

foreach(var d in Model.Visits) 
{ 
    <tr> 
     <td>@d.IPAddress</td> 
     <td>@d.NumVisits</td> 
    </tr> 
} 
0

這是asp.net MVC,MVC是指模型(業務邏輯),視圖(表示層或客戶端可以看到的內容)以及控制器,它使用請求進行操作。爲什麼在視圖中使用模型?這將是正確的,在Model類中使用sql進行操作,在控制器中調用它,並通過ViewData發送到View。沒有理由以這種方式使用asp.net MVC。

0

在你的Views目錄中應該有一個Web.config。你只需要在命名空間添加到您的幫手