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

C# 如果模型中的给定属性没有值,我怎么能不在视图中渲染按钮?,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,我是网络开发新手。在我看来,如果Model.TemplateLocation(一个字符串)不是null或空的,我希望有条件地显示一个按钮。下面是当前呈现按钮的代码: <div class="WPButton MyButton"> <%=Html.ActionLink(Model.TemplateLinkName, "DownloadTemplate", "ExternalData", new ArgsDownloadTemplate { Path = Model.T

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

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


在呈现Model.TemplateLocations值之前,我可以在中包装一些C代码来测试它吗?我被告知以某种方式查看@style=“display:none”。这就是我需要的吗?

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

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

顺便说一句,标记的版本只是代码调用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标记的数量,许多人觉得第二种方法无论出于什么原因都是不正确的。我发现,当它提供了更简单的代码阅读时,我使用了这两种方法。

+1关于和Response.Write()的要点-直到现在我才知道这一点,以前我也没有看到任何对它的引用。