1

在我看来,我正在遍历我的模型并构建 html 以显示在页面上。我正在使用 stringbuilder 和 if/else 条件构建这个 html。

我试图将此字符串呈现为 html,但我一直卡住。

这是代码:

@model UserManager.Models.vw_UserManager_Model 
<div id="success-message">
    <fieldset>
        <legend><b>@ViewData["Action"]</b> </legend>
        <!-- User created -->
        <div id="content">

            @Html.Raw("some test string");

            @{
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                int i = 0;
                sb.Append("<ul>");
                foreach (var item in Model)
                {
                    string s = item.ToString();
                    if (s == "," && i != 1)
                    {
                        // When it finds first delimiter, start building the string
                        i = 1;
                        sb.Append("<li>");
                    }

                    else if (s == "," && i == 1)
                    {
                        // When it finds first delimiter, start building the string
                        sb.Append(" : ");
                    }

                    else if (i == 1 && s != "/")
                    {
                        // Contine building the string
                        sb.Append(s);
                    }

                    else if (s == "/")
                    {
                        // End current list item and set i to 0. This will start the next li sequence
                        sb.Append("</li>");
                        i = 0;
                    }

                    else
                    {
                        // Do nothing in the loop   
                    }
                }
                sb.Append("</ul>");
                var str = MvcHtmlString.Create(sb.ToString());

            }

        </div>
    </fieldset>
</div>

SB的内容

{<ul><li>firstname : sdlmsdm</li><li>lastname : smsd</li><li>salutation : Mr</li><li>password : ksklsd</li><li>email : sdkm@as.com</li><li>userName : sdkmsdmke</li><li>MaxConcurrentUsers : 0</li><li>group_name : [PIAS] UK LTD</li><li>module_name : Connect:Top 1000 Advertisers</li><li>isactive : True</li><li>IsApproved : False</li><li>alf : True</li><li>brad : False</li><li>selected_moduleAlf : Connect:Top 1000 Advertisers : System.String : selected_moduleBrad : false : </ul>}

这段代码完成调试后,我看不到任何 HTML。有人有答案吗?

4

2 回答 2

7

那是因为你不写。你需要做@Html.Raw(str)

sb.Append("</ul>");
var str = new HtmlString(sb.ToString());

@Html.Raw(str)
于 2013-04-09T09:37:00.407 回答
1

将您的 HtmlString 更改为 MvcHtmlString.Create("string") ,然后只显示创建的变量。

<div id="content">
    @{
        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append("<ul>");
        sb.Append("<li>asdfd</li>");  
        sb.Append("</ul>");
        var str = MvcHtmlString.Create(sb.ToString());

    }

    @str
</div>
于 2013-04-09T09:44:00.270 回答