adr*_*anp 6 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>
<td><%= Html.DisplayFor(c => person.Age) %></td>
<td><%= Html.DisplayFor(c => person.Budget)%></td>
</tr>
<%} %>
Run Code Online (Sandbox Code Playgroud)
我已经创建了模板来覆盖Brad Wilson教程之后的默认值:
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
渲染表时我不想显示周围的HTML,但我不知道如何设置HideSurroundingHtml值?
Jon*_*ell 11
根据ModelMetadata.HideSurroundingHtml属性上的MSDN页面:
当此属性与DataAnnotationsModelMetadataProvider模型元数据提供程序一起使用时,如果HiddenInputAttribute属性为true且DisplayValue属性设置为false,则将其设置为true.
因此,您需要使用以下方法在模型中装饰您的属性:
[HiddenInput(DisplayValue = false)]
Run Code Online (Sandbox Code Playgroud)
我对我没有任何意义,但似乎有效!
一种更干净、更清晰的方法是这样的:
public class MyModel
{
[AdditionalMetadata("HideSurroundingHtml", true)]
public string Something { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
而在你看来:
bool hideSurroundingHtml = (this.ViewData.ModelMetadata.AdditionalValues.ContainsKey("HideSurroundingHtml") ? (bool)this.ViewData.ModelMetadata.AdditionalValues["HideSurroundingHtml"] : false);
if (!hideSurroundingHtml)
{
@:<div>
}
//Content.
if (!hideSurroundingHtml)
{
@:</div>
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |