Razor 为超链接添加额外的换行符和空格



我正在编写一个 Web 应用程序,用于解析文本文件并将行号替换为超链接,以便用户可以轻松导航到他们输入的文本文件的特定行号。

我正在打印存储在 .cshtml 视图中的 Viewbag 中的对象列表。当我将所有内容打印为普通文本时,一切看起来都很好。例如:

--------
Summary
--------
Version             23.00.00.00
Error 007           2   at lines    (09/02/2014-06:13:32.607, 5662);
Timeouts            0
Reboots             1   at lines    (09/02/2014-06:12:59.900, 2)

但是当我将行号打印为超链接时,就会发生这种情况:

--------
Summary
--------
Version             23.00.00.00
Error 007           2   at lines    (09/02/2014-06:13:32.607,                [5662]
);
Timeouts            0
Reboots             1   at lines    (09/02/2014-06:12:59.900,                [2]
)

当超链接打印为普通字符串时,我的解析器工作得很好,所以看起来 razor 在每个超链接之前添加了额外的空格,在每个超链接之后添加了额外的换行符。下面是视图中的代码:

<pre>     
        @for (int i = 0; i < ViewBag.links.Count; i++)
        { 
            if (ViewBag.links[i].isHyperLink == true)
            {
                <a href="@ViewBag.links[i].url">@ViewBag.links[i].text</a> //hyperlink printed
            }  
            if (ViewBag.links[i].isHyperLink == false)
            {
                @ViewBag.links[i].text; //normal text printed
            }
        }
</pre>

我是 asp.net/razor 菜鸟,所以非常感谢任何帮助。谢谢你的时间。

附言我把应该超链接的文本放在括号内。超链接功能不能很好地转移到堆栈溢出。

编辑:这是要求的来源

--------
Summary
--------
Version             23.00.00.00
Error 007           2   at lines    (09/02/2014-06:13:32.607,                <a href="C:UsersGBALLprojectproject_folderwebsiteHomeUploadFiles~/App_Data/Uploads/bloop.txt">5662</a>
); 
Timeouts                0
Reboots             1   at lines    (09/                <a href="C:UsersGBALLprojectproject_folderwebsiteHomeUploadFiles~/App_Data/Uploads/bloop.txt">2</a>
/2014-06:12:59.900, 2)

浏览器在呈现 HTML 时始终忽略空格。这就是<pre>元素存在的原因。它的唯一功能是告诉浏览器在渲染时实际考虑空格。但是,这是一个非此即彼的命题:要么你看到空格,所有的空格,要么你看不到。 这意味着,如果您要使用预先格式化的块,则需要注意 Razor 代码中的空格。您可以执行以下操作:

@for (int i = 0; i < ViewBag.links.Count; i++)
{ 
    if (ViewBag.links[i].isHyperLink == true)
    {<a href="@ViewBag.links[i].url">@ViewBag.links[i].text</a>}  
    else
    {@ViewBag.links[i].text}
}

请注意,代码括号是如何折叠在文本周围的,以便不存在空格。或者,最好,由于上面很丑陋,请使用类似三元的东西:

@Html.Raw(ViewBag.links[i].isHyperLink == true
    ? string.Format("<a href='{0}'>{1}</a>", ViewBag.links[i].url, ViewBag.links[i].text)
    : ViewBag.links[i].text) 

最新更新