我需要在控制器中创建一个未指定数量的超链接对象,然后在视图中显示它们。我在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 .HyperLink
当然,我想要那些漂亮的,带蓝色的,带下划线的超链接,但似乎并非如此。我是ASP.NET菜鸟,我很感激任何帮助。谢谢你的时间。
答案 0 :(得分:3)
不直接回答您的问题,但这对您来说是一个更易于管理的解决方案:
为什么不构建一类这样的东西:
public class DynamicHyperLink
{
public string Text { get; set; }
public string Link { get; set; }
}
然后,您将要显示的文本应用于text属性和Link属性
的链接完成此操作后,在Controller中将此作为模型传递给您的视图,如下所示:
public ActionResult DynamicLinks()
{
List<DynamicHyperLink> model = new List<DynamicHyperLink>()
{
new DynamicHyperLink(){
Text = "Some Text Here",
Link = "http://www.somelink.com"
},
new DynamicHyperLink(){
Text = "Some Other Text ",
Link = "http://www.someotherlink.com"
}
};
return View(model);
}
显然你会想要使用你的函数从控制器中构建它,但是给你一个想法,然后在视图中:
@model List<DynamicHyperLink>
@{
ViewBag.Title = "DynamicLinks";
}
<h2>DynamicLinks</h2>
@if (Model != null && Model.Count > 0)
{
foreach (var item in Model)
{
<div>
<a href="@item.Link">@item.Text</a>
</div>
}
}
这将为您生成链接,然后如果您想添加自定义样式链接,您可以将其添加为附加属性。
希望这有帮助,如果您需要更多信息,请告诉我。
答案 1 :(得分:2)
我如何解决这个问题是使用@html.raw(Viewbag.Test)。在我的控制器中,我刚创建了一个视图包。如果您只有几个超链接,可以轻松解决问题
ViewBag.Message = "<a href="+Website+">Website Text</a>";