c# - 在 View 中显示动态创建的超链接

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

我需要在 Controller 中创建未指定数量的超链接对象,然后在 View 中显示它们。我在 HomeController.cs 中动态创建超链接对象没有问题,但是我无法让所述超链接对象在 View 中正确显示。

这是创建超链接的代码,将它们放入列表中,然后将该列表添加到 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

这是我 View 中的代码:

<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>

当前 View 显示的内容是:

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 菜鸟,如果有任何帮助,我将不胜感激。感谢您抽出时间。

最佳答案

不直接回答您的问题,但这对您来说是一个更易于管理的解决方案:

为什么不构造一个类似这样的类:

 public class DynamicHyperLink
    {
        public string Text { get; set; }

        public string Link { get; set; }
    }

然后,您可以将要显示的文本应用到文本属性,并将链接应用到链接属性

完成此操作后,在 Controller 中将其作为模型传递到 View ,如下所示:

 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); 

        }

显然,您希望使用您的函数在 Controller 之外构建它,但给您一个想法,然后在 View 中:

@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>

    }
}

这将为您生成链接,然后如果您想添加自定义样式的链接,您可以将其添加为附加属性。

希望这对您有所帮助,如果您需要更多信息,请告诉我。

关于c# - 在 View 中显示动态创建的超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27140027/

相关文章:

asp.net-mvc - Asp.Net MVC 操作 - 关注点分离/单一职责原则

c# - 如何从事件中返回 List<int>

asp.net - 是否有商业部署和使用的基于 .NET CAS(代码访问安全)的应用程序?

css - modalpopupextender 有一个 element.style

c# - 客户端日期时间与服务器日期时间

asp.net-mvc - 保存后显示相同页面

c# - 如何在 C# 中读取制表符分隔的 Excel 文件中的列?

c# - 如何实现 IEnumerator<T>?

c# - Visual Studio Selenium 测试启动本地项目

asp.net - 在 ASP.NET 中设置到 SQL SERVER 的连接字符串