dev*_*xer 4 c# asp.net-mvc markup code-formatting visual-studio
我今天正在研究一个ASP.NET MVC模板,在盯着所有那些荧光黄色%标签足够长时间之后,我基本上认定我已经受够了,所以我煞费苦心地修改了我的ascx文件,看起来像这样:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<% if (Model == null)
{ %>
<%= ViewData.ModelMetadata.NullDisplayText %>
<% }
else if (ViewData.TemplateInfo.TemplateDepth > 1)
{ %>
<%= ViewData.ModelMetadata.SimpleDisplayText %>
<% }
else
{ %>
<% foreach (var prop in ViewData.ModelMetadata.Properties.Where(
pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm)))
{ %>
<% if (prop.HideSurroundingHtml)
{ %>
<%= Html.Display(prop.PropertyName) %>
<% }
else
{ %>
<% if (!String.IsNullOrEmpty(prop.GetDisplayName()))
{ %>
<span class="display-label">
<%= prop.GetDisplayName() %>
</span>
<% } %>
<span class="display-field">
<%= Html.Display(prop.PropertyName) %>
</span>
<% } %>
<% } %>
<% } %>
Run Code Online (Sandbox Code Playgroud)
最后啊可读性.唯一的问题是,它需要的方式长期用手工做到这一点.我需要一种自动化方法.某种代码格式化解决方案.也许是宏或Visual Studio加载项或......?你有什么建议?
更新
我现在正计划从我的标记中重构大部分逻辑(参见Mike的答案),但与此同时,我想出了一种更易于管理的方法来格式化具有代码和HTML混合的ascx文件.代码以这种方式更加分散,但是首先将这样的代码格式化起来要容易得多,并且使用起来也容易得多.
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<%
if (Model == null)
{
%>
<%= ViewData.ModelMetadata.NullDisplayText %>
<%
}
else if (ViewData.TemplateInfo.TemplateDepth > 1)
{
%>
<%= ViewData.ModelMetadata.SimpleDisplayText %>
<%
}
else
{
%>
<%
foreach (var prop in ViewData.ModelMetadata.Properties.Where(
pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm)))
{
if (prop.HideSurroundingHtml)
{
%>
<%= Html.Display(prop.PropertyName) %>
<%
}
else
{
%>
<div class="display-row">
<%
if (!String.IsNullOrEmpty(prop.GetDisplayName()))
{
%>
<div class="display-label">
<%= prop.GetDisplayName() %>
</div>
<%
}
%>
<div class="display-field">
<%= Html.Display(prop.PropertyName) %>
</div>
</div>
<%
}
}
}
%>
Run Code Online (Sandbox Code Playgroud)
Mik*_*ott 16
我相信你的"标签汤"疼痛实际上是一个不同问题的症状:你感觉到它,因为你的观点中有逻辑.视图应该非常轻量级,几乎没有逻辑.您的逻辑应该在您的控制器中,它可以决定根据逻辑呈现不同的视图.或者你可以将逻辑放入帮手.
| 归档时间: |
|
| 查看次数: |
1593 次 |
| 最近记录: |