如果模型中的给定属性没有值,我怎么能不在视图中渲染按钮?

时间:2010-06-09 22:36:18

标签: c# html asp.net-mvc

我是网络开发的新手。在我看来,如果Model.TemplateLocation(字符串)不为null或为空,我想有条件地显示一个按钮。下面是当前呈现按钮的代码:

    <div class="WPButton MyButton">
  <%=Html.ActionLink(Model.TemplateLinkName, "DownloadTemplate", "ExternalData", new ArgsDownloadTemplate { Path = Model.TemplateLocation, FileName = Model.TemplateFileNameForDownload }, new{})%>
</div>

在渲染之前,我可以在&lt; %%&gt;中包装一些C#代码来测试Model.TemplateLocations值吗?我被告知以某种方式调查@style =“display:none”。这可能是我需要的吗?

1 个答案:

答案 0 :(得分:3)

您可以在代码块中添加控制语句,以有条件地输出HTML。

<% if (Model.SomeCondition) { %>
   <div>
     <ul>
      <%=Html.ActionLink(Model.TemplateLinkName, "DownloadTemplate", "ExternalData", new ArgsDownloadTemplate { Path = Model.TemplateLocation, FileName = Model.TemplateFileNameForDownload }, new{})%>
     </ul>
   </div>
<% } %>

顺便提一下,&lt;%=%&gt;标签的版本只是对Response.Write()的代码调用的快捷方式。所以这将完成同样的事情:

<% if (Model.SomeCondition) { 
   Response.Write("<div><ul>");
   Response.Write (Html.ActionLink(Model.TemplateLinkName, "DownloadTemplate", "ExternalData", new ArgsDownloadTemplate { Path = Model.TemplateLocation, FileName = Model.TemplateFileNameForDownload }, new{}));
   Response.Write("</ul></div>");
} %>

关于任何一种方法的正确性存在很多争论。许多人讨厌他们必须使用的第一种方式的ASP标签的数量,许多人认为第二种方式是不正确的无论出于何种原因。我发现当它提供更简单的代码读取时我会同时使用它们。