在视图中显示动态创建的超链接
本文关键字:创建 超链接 动态 显示 视图 | 更新日期: 2023-09-27 18:32:03
我需要在控制器中创建未指定数量的超链接对象,然后在视图中显示它们。我在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.HyperLinkSystem.Web.UI.WebControls.HyperLink
当然,我希望拥有那些漂亮的蓝色下划线超链接,但事实似乎并非如此。我是 ASP.NET 菜鸟,我将不胜感激任何帮助。谢谢你的时间。
不直接回答您的问题,但这对您来说是一个更易于管理的解决方案:
为什么不构造一个这样的类:
public class DynamicHyperLink
{
public string Text { get; set; }
public string Link { get; set; }
}
然后,将要显示的文本应用于 text 属性,并将链接应用于 Link 属性
完成此操作后,在控制器中将其作为模型传递给视图,如下所示:
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>
}
}
然后,这将为您生成链接,然后,如果要添加自定义样式链接,可以将其添加为附加属性。
希望这有所帮助,如果您需要更多信息,请告诉我。
我如何解决这个问题是通过使用@html.raw(Viewbag.Test)。在我的控制器中,我刚刚创建了一个视图包。如果您只有几个超链接,则易于解决
ViewBag.Message = "<a href="+Website+">Website Text</a>";