gpt4 book ai didi

asp.net-mvc - Asp.Net MVC 中的设计器友好 View

转载 作者:行者123 更新时间:2023-12-04 18:16:54 26 4
gpt4 key购买 nike

我很喜欢 Asp.Net MVC,并希望在即将到来的项目中使用它。然而,该项目的一部分强调能够将项目 View 展示给设计师,以进行主题等操作。我预料到的一个问题是 Asp.Net MVC View 是相当以开发人员为中心的。我真的不想让设计师了解 <% 与 <%= 的复杂性,更不用说像 <% foreach ...

以典型的 MVC 菜单结构为例。

<div id="menu">
<ul>
<li><%= Html.ActionLink("Home", "Index", "Main")%></li>
<li><%= Html.ActionLink("About", "About", "Main")%></li>
<li><% Html.RenderPartial("LogOnUserControl"); %></li>
</ul>
</div>

我宁愿能够告诉设计师使用类似的东西
<div id="menu">
<ul>
<li>{ActionLink "Home", "Index", "Main"}</li>
<li>{ActionLink "About", "About", "Main"}</li>
<li>{Partial "LogOnUserControl"}</li>
</ul>
</div>

或者
<div id="menu">
<ul>
<li><my:ActionLink text="Home" action="Index" controller="Main" /></li>
<li><my:ActionLink text="About" action="About" controller="Main" /></li>
<li><my:Partial name="LogOnUserControl" /></li>
</ul>
</div>

是的,最后一个看起来很像一大堆用户控件。就个人而言,我不喜欢实际使用 UserControls 来执行此操作,因为这些控件的渲染发生在几乎所有其他事情之后(据我了解),而且我更喜欢更符合 MVC 生命周期的东西.我真正需要的是一组占位符和一种用相关渲染替换它们的方法。

那么最好的地方在哪里,我在这里看到什么样的权衡。我可以想象有几个角度来解决这个问题:
  • 一个自定义 ViewPage 类,我可以在其中覆盖相关内容。也许是 ViewPage.RenderView 或 ViewPage.FrameworkInitialize,但我不知道你是如何从那里获得文本的。
  • 创建一个自定义 TextWriter 并覆盖 ViewPage.CreateHtmlTextWriter,然后我可以截取文本输出以替换内容。不过,这在周期中已经很晚了,如果我不小心的话,会弄乱其他自定义过滤。
  • 创建我自己的 IView 和 ViewEngine 类。在想知道我是否要去一个非常糟糕的地方之前,我并没有走太远。
  • 可以模仿所需功能的自定义用户控件。

  • 意见?其他选择?我自己的 ViewEngine 是我最好的选择吗?我自己的 ViewPage?或者 UserControl 对象是否足够(请拒绝)?

    最佳答案

    看看Spark .它的语法类似于您的示例。

    关于asp.net-mvc - Asp.Net MVC 中的设计器友好 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1646730/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com