在视图中显示动态创建的超链接

本文关键字:创建 超链接 动态 显示 视图 | 更新日期: 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>";