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

时间:2014-11-26 01:49:09

标签: c# asp.net asp.net-mvc hyperlink

我需要在控制器中创建一个未指定数量的超链接对象,然后在视图中显示它们。我在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菜鸟,我很感激任何帮助。谢谢你的时间。

2 个答案:

答案 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>";