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>
}