Model view controller 有没有办法在ASP.MVC 2中设置HideSurroundingTML值

Model view controller 有没有办法在ASP.MVC 2中设置HideSurroundingTML值,model-view-controller,asp.net-mvc-2,Model View Controller,Asp.net Mvc 2,我正在建立一个这样的数据表 <% foreach (var person in Model.People) { %> <tr> <td><%= Html.ActionLink(accessory.Name, "EditPerson") %></td> <td><%= Html.DisplayFor(c => person.Name) %></td>

我正在建立一个这样的数据表

<% foreach (var person in Model.People)
{
%>
    <tr>
        <td><%= Html.ActionLink(accessory.Name, "EditPerson") %></td>
        <td><%= Html.DisplayFor(c => person.Name) %></td>
        <td><%= Html.DisplayFor(c => person.Age) %></td>
        <td><%= Html.DisplayFor(c => person.Budget)%></td>
    </tr>
<%} %>

人名)%>
个人(年龄)%>
个人预算)%>
我已创建模板以覆盖以下默认值:


受保护的覆盖无效OnInit(事件参数e){
碱基.奥尼特(e);
if(ViewData.ModelMetadata.HidesUroundingTML){
TablePlaceholder.Visible=false;
}
否则{
控件。删除(数据);
DataPlaceholder.Controls.Add(数据);
}
}
在呈现表格时,我不想显示周围的HTML,但我不知道如何设置HidesUroundingTML值?

根据以下内容:

当此属性与 DataAnnotationsModelMetadataProvider 模型元数据提供程序,设置为 当两个 HiddenInputAttribute属性为true 并设置DisplayValue属性 这是错误的

因此,您需要在模型中用以下内容装饰您的财产:

[HiddenInput(DisplayValue = false)]

我没有任何意义,但它似乎工作

更干净、更清晰的方法是:

public class MyModel
{
    [AdditionalMetadata("HideSurroundingHtml", true)]
    public string Something { get; set; }
}
在你看来:

bool hideSurroundingHtml = (this.ViewData.ModelMetadata.AdditionalValues.ContainsKey("HideSurroundingHtml") ? (bool)this.ViewData.ModelMetadata.AdditionalValues["HideSurroundingHtml"] : false);

if (!hideSurroundingHtml)
{
    @:<div>
}

//Content.

if (!hideSurroundingHtml)
{
    @:</div>
}
bool hidesuroundingtml=(this.ViewData.ModelMetadata.AdditionalValues.ContainsKey(“hidesuroundingtml”)?(bool)this.ViewData.ModelMetadata.AdditionalValues[“hidesuroundingtml”]:false);
if(!hidesuroundingtml)
{
@:
}
//内容。
if(!hidesuroundingtml)
{
@:
}

我必须尝试一下,但出于直觉,我认为它将使用隐藏模板而不是我想要的模板进行渲染。@adriaanp这可能会导致它使用
HiddenInput
模板,但您可以在同一属性上使用
UIHint
属性来覆盖它。谢谢,我仍然不喜欢HTML在所有你需要的
if
语句中变得多么笨拙,但我认为这是一种非常简单的方法。请注意,这种技术在
AdditionalValues
字典中创建并访问一个条目,实际上并没有在
ModelMetadata
本身;非直觉地,该标志仍然为false。
bool hideSurroundingHtml = (this.ViewData.ModelMetadata.AdditionalValues.ContainsKey("HideSurroundingHtml") ? (bool)this.ViewData.ModelMetadata.AdditionalValues["HideSurroundingHtml"] : false);

if (!hideSurroundingHtml)
{
    @:<div>
}

//Content.

if (!hideSurroundingHtml)
{
    @:</div>
}