【发布时间】:2015-01-24 05:49:06
【问题描述】:
我需要在控制器中创建未指定数量的超链接对象,然后在视图中显示它们。我在 HomeController.cs 中动态创建超链接对象没有问题,但是我无法让所述超链接对象正确显示在视图中。
这里是创建超链接的代码,将它们放在一个列表中,然后将该列表添加到 ViewBag 中
List<HyperLink> links = new List<HyperLink>();
List<HyperLink> tempLink = new List<HyperLink>();
string line = "";
output = "";
while (!p.StandardOutput.EndOfStream)
{
line = p.StandardOutput.ReadLine();
output += "\n" + line;
if (!line.Equals(""))
{
tempLink = GetLineNumbers(line, destpath);
if (tempLink.Count > 0)
{
links.AddRange(tempLink); // HYPERLINKS ADDED TO LIST HERE
}
else
continue;
}
}
ViewBag.links = links; // LIST OF HYPERLINKS ADDED TO VIEWBAG HERE
这是我认为的代码:
<h2> RESULTS </h2>
<article>
<pre>
@for (int i = 0; i < ViewBag.links.Count; i++)
{
@ViewBag.links[i] //HYPERLINKS SUPPOSED TO BE DISPLAYED HERE
}
</pre>
</article>
目前视图显示的是这样的:
System.Web.UI.WebControls.HyperLinkSystem.Web.UI.WebControls.HyperLinkSystem.Web.UI.WebControls.HyperLinkSystem.Web.UI.WebControls.HyperLinkSystem.Web.UI.WebControls.HyperLinkSystem.Web.UI.WebControls .超链接
当然,我想要那些漂亮的、蓝色的、带下划线的超链接,但事实并非如此。我是 ASP.NET 菜鸟,我会很感激这方面的任何帮助。感谢您的宝贵时间。
【问题讨论】:
-
System.Web.UI.WebControls.HyperLink是 WebForms 控件。你为什么在 MVC 应用程序中使用它?我假设您想要HyperLink的属性,例如@ViewBag.links[i].NavigateUrl,但这只会将 url 作为字符串返回,而不是<a>标记。 -
我想显示 @ViewBag.links[i].Text 但正如你所说,这只会返回一个简单的字符串。我正在使用 System.Web.UI.WebControls.HyperLink 因为它似乎是一种创建超链接的简单方法。我可以使用更好的类吗?
-
然后在循环中构建
<a>标签<a href="@ViewBag.links[i].NavigateUrl ....但是你为什么要使用webForms 控件呢? -
我解释的不是很好。我想用 ViewBag.links[i].Text 中的字符串显示一个普通的超链接(而不是图像或其他东西)。使用 webForms 控件而不是什么?
-
我无法想象您为什么或想在这里做什么。使用 WebForms 控件有什么意义。只需使用
string url和string displayText创建一个视图模型,填充一个集合并在循环中<a href="@ViewBag.links[i].Url">@ViewBag.links[i].DisplayText</a>(我假设这必须是文本文件中的外部链接的集合)
标签: c# asp.net asp.net-mvc hyperlink