MVC 3 - HTML 帮助程序

发布于 2024-10-31 21:20:49 字数 694 浏览 0 评论 0 原文

我本来打算使用声明性 HTML 帮助器,但后来发现它们尚未在 MVC 3 版本中实现。

我试图让旧的 HTML 帮助器使用以下代码:

private static String GenerateSingleOptionHTML(Question q)
{    
    String ret = "";

    for(int i = 0; i < 3; i++)
    {
        ret += String.Format("<li><input type=\"radio\" id=\"Q" + i +"\" value=\"" + i + "\" name=\"Q" + i +"\" />" + q.Body + "</li>");
    }

    return ret;
}

在工作时忽略 html 和标记美好的。在我看来,我得到的是:“

  • 正文问题 1
  • 正文问题 1
  • Body Question 1
  • ”而不是格式化的 HTML。

    谢谢

    I was going to use declarative HTML helpers, but then found out that they have not been implemented in a release of MVC 3.

    I'm trying to get old HTML helpers to work with the following code:

    private static String GenerateSingleOptionHTML(Question q)
    {    
        String ret = "";
    
        for(int i = 0; i < 3; i++)
        {
            ret += String.Format("<li><input type=\"radio\" id=\"Q" + i +"\" value=\"" + i + "\" name=\"Q" + i +"\" />" + q.Body + "</li>");
        }
    
        return ret;
    }
    

    Ignore the html and tag as they work fine. What I get in my view, is: " <li><input type="radio" id="Q0" value="0" name="Q0" />Body Question 1</li><li><input type="radio" id="Q1" value="1" name="Q1" />Body Question 1</li><li><input type="radio" id="Q2" value="2" name="Q2" />Body Question 1</li> " rather than formatted HTML.

    Thank you

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(2

    怪我入戏太深 2024-11-07 21:20:49

    David Neale 是对的,但在 ASP.NET MVC 3 中,您实际上应该返回 HtmlString 的实例,而不是 MvcHtmlString (不过,两者都可以工作):

    private static HtmlString GenerateSingleOptionHTML(Question q)
    {    
        String ret = "";
    
        for(int i = 0; i < 3; i++)
        {
            ret += String.Format("<li><input type=\"radio\" id=\"Q" + i 
                +"\" value=\"" + i + "\" name=\"Q" + i +"\" />" + q.Body + "</li>");
        }
    
        return new HtmlString(ret);
    }
    

    David Neale is right, but in ASP.NET MVC 3 you should actually return an instance of HtmlString, not MvcHtmlString (both will work, though):

    private static HtmlString GenerateSingleOptionHTML(Question q)
    {    
        String ret = "";
    
        for(int i = 0; i < 3; i++)
        {
            ret += String.Format("<li><input type=\"radio\" id=\"Q" + i 
                +"\" value=\"" + i + "\" name=\"Q" + i +"\" />" + q.Body + "</li>");
        }
    
        return new HtmlString(ret);
    }
    
    心安伴我暖 2024-11-07 21:20:49

    您需要返回 MvcHtmlString 的实例。您的输出字符串正在被编码。

    MvcHtmlString 对象将被视为在渲染期间已编码(我假设您使用的是 <%: %> 语法而不是 <%= %> 将 HTML 注入到页面中)。

    return MvcHtmlString.Create(ret);
    

    You need to return an instance of MvcHtmlString. Your output string is getting encoded.

    The MvcHtmlString object will be treated as already encoded during rendering (I assume you're using the <%: %> syntax instead of <%= %> to inject the HTML into the page).

    return MvcHtmlString.Create(ret);
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文