由于某些原因,无法识别我的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>
任何人都知道如何解决它?
答案 0 :(得分:5)
编写Html助手的方法是 在帮助器中返回字符串。
<html>
<body>
<div>
@GetSiteVisits()
</div>
</body>
</html>
@helper GetSiteVisits()
{
@Html.Raw("hello");
}
答案 1 :(得分:2)
您需要导入命名空间:
@using System.Data.SqlClient
@using System.Data
@using Mine.MyHtmlHelper.MyNameSpace // Here!!
答案 2 :(得分: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>
}
答案 3 :(得分:1)
确保它位于您的web.config文件中(可能位于根目录以及〜/ Views文件夹中):
<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, ...
答案 4 :(得分:0)
这是asp.net MVC,MVC表示模型(业务逻辑),View(表示层或客户端看到的),以及控制器,它与请求一起操作。为什么在View中使用Model。在Model类中使用sql进行操作,在控制器中调用它,然后通过ViewData发送到View是正确的。没有理由以这种方式使用asp.net MVC。
答案 5 :(得分:0)
在Views目录中应该有一个Web.config。您只需要将命名空间添加到帮助程序