简体   繁体   English

ASP.NET MVC 3-无法在辅助方法中正确添加控件

[英]ASP.NET MVC 3 - can't properly add controls in a helper method

I feel like I'm missing something obvious here. 我觉得这里缺少明显的东西。 I just wanted to try putting out some simple XML output onto a screen, so I have my model bringing in an xml file to the view as an XElement in a simple mvc3 app. 我只是想尝试将一些简单的XML输出放到屏幕上,所以我让我的模型在一个简单的mvc3应用程序中将XML文件作为XElement引入视图中。 The problem is that none of the html from the helper method is being generated. 问题是没有生成来自helper方法的html。 If I try to render the same elements in the regular foreach loop code it works fine, but it's almost as though it's completely skipping over the helper, or just not caring enough to render the element. 如果我尝试在常规的foreach循环代码中呈现相同的元素,则可以正常工作,但几乎就像它完全跳过了帮助程序,或者只是不太在意呈现该元素。

Is there something simple I'm missing? 有什么简单的我想念的吗?

@helper NavigateElement(XElement xElement)
{
    if (xElement.HasElements)
    {
        foreach (XElement xChildElement in xElement.Elements())
        {
            NavigateElement(xChildElement);
        }
    }
    else
    {
        @Html.Label(xElement.Name.LocalName.ToString())
        @Html.TextBox(xElement.Name.ToString(), xElement.Value)
    }
}


@foreach (XElement xElement in Model.exampleXML.Elements())
{
    if (xElement.HasElements)
    {
        foreach (XElement xChildElement in xElement.Elements())
        {
            NavigateElement(xChildElement);
        }
    }
    else
    {
        @Html.Label(xElement.Name.LocalName.ToString())
        @Html.TextBox(xElement.Name.ToString(), xElement.Value)
    }
}

shouldn't your else blocks look like this? 您的else块不应该是这样吗?

else
{
    Html.Label(xElement.Name.LocalName.ToString())
    Html.TextBox(xElement.Name.ToString(), xElement.Value)
}

您实际上在任何地方打电话给您的助手吗?

@NavigateElement(Model.exampleXML)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM