我正在建立一个像这样的数据表
<% 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>
<%} %>
我已创建模板以覆盖Brad Wilson's tutorial后面的默认值:
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<script runat="server">
protected override void OnInit(EventArgs e) {
base.OnInit(e);
if (ViewData.ModelMetadata.HideSurroundingHtml) {
TablePlaceholder.Visible = false;
}
else {
Controls.Remove(Data);
DataPlaceholder.Controls.Add(Data);
}
}
</script>
<asp:ContentPlaceHolder runat="server" id="Data" />
<asp:PlaceHolder runat="server" id="TablePlaceholder">
<table cellpadding="0" cellspacing="0" border="0" width="100%">
<tr>
<td style="width: 10em;">
<div class="display-label" style="text-align: right;">
<asp:ContentPlaceHolder runat="server" id="Label">
<%= ViewData.ModelMetadata.GetDisplayName() %>
</asp:ContentPlaceHolder>
</div>
</td>
<td>
<div class="display-field">
<asp:PlaceHolder runat="server" id="DataPlaceholder" />
</div>
</td>
</tr>
</table>
</asp:PlaceHolder>
渲染表格时,我不想显示周围的HTML,但我不知道如何设置HideSurroundingHtml值?
答案 0 :(得分:11)
根据MSDN page on ModelMetadata.HideSurroundingHtml Property:
当此属性与。一起使用时 DataAnnotationsModelMetadataProvider 模型元数据提供程序,它被设置为 两者都是真的 HiddenInputAttribute属性为true 并设置DisplayValue属性 为假。
所以你需要用你的模型装饰你的房产:
[HiddenInput(DisplayValue = false)]
我对我没有任何意义,但似乎有效!
答案 1 :(得分:3)
更清洁,更清晰的方法就是这样:
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>
}