4

我最近开始学习了ASP.NET Model View Controller (MVC)。它在网站上采用的方法非常独特,我注意到dynamics. 这将大大改善维护。

但我可以看到过度使用dynamics可能是多么糟糕,特别是如果你偏离strongly typed model. 所以我的问题是这个...

我正在创建一个布局,但我希望布局为fluid. 我希望设计可以很容易地改变而不影响我的逻辑。我知道您可以创建Master Pages并且Master Content Pages可以轻松容纳大部分布局。除非这对我的使用仍有限制。

有没有办法将这些更改Master PagesMaster Content Pages真正的动态实体?本质上designer可以使用What you see is what you get我创建的允许修改整个站点的字段?

我最初的想法是存储创建一个dynamic layout每个View引用数据库的位置;无论这些变量是什么,都会创建布局。但我不确定这是最好的方法吗?

对于最佳方法有什么建议或想法吗?

请我不打算开始辩论,但是如果人们可以指出我可以研究该实施方法的方向,那将非常有帮助。这样我就可以找到适合这个项目需要的最佳解决方案dynamic layout


更新:

为了提供这个项目的背景,我公司有几个子公司。这些子公司将使用该应用程序,但希望为特定公司量身定制。为了避免过多的设计布局,我想abstract那部分。

这样我logic就不会受到影响,但是该软件的模块足以满足我们所有子公司的设计需求,而我不必定制其中的每一个或冒着设计师影响logic.

谢谢您的帮助。


更新:

为了帮助澄清,目标是允许User Interface与应用程序分离。在正常情况下Windows Application,我会利用Inversion Of Control它来帮助将界面和结构与初始逻辑分开。

这种解耦方法很有帮助,目标是在这种情况下解耦接口,Razor Syntax从而设计创建结构。如果你有一个网站:

<html>
  <div id="Page-Container">
    <div id="Header" />
    <div id="Content" />
    <div id="Footer" />
  </div>
</html>

该结构将是静态的,但就我而言,我希望它是dynamic. 这样我的逻辑可以通过结构抽象出来,但设计师可以随意操纵和改变page layout他想要的。

4

3 回答 3

1

不确定我是否完全理解您的要求......但也许以下前提会引起人们的兴趣?

@model CompanyName.LayoutModel
<html>
    <body>
    @foreach(string view in Model.Views)
    {
        @Html.Partial(view);
    }
    </body>
</html>

这将取决于您使用的任何 UI 框架是如何工作的。这个想法是您向 Razor 呈现一个对象,该对象仅包含一组视图,然后 Razor 会部分呈现这些视图。为了。

您可能希望检查http://www.google.com/ig之类的网站,而不是使用 ASP.NET MVC 进行初始服务,而是使用 ajax 为用户读取自定义布局(如果您在主页中编辑设置您可以完全自定义布局以及在主页上获得什么样的新闻),然后用来自进一步 ajax 调用的数据填充这些布局。
对我来说,这听起来更灵活,每个 AJAX 调用都可以是 ASP.NET MVC 方法(返回剃须刀页面的输出),而 javascript 可以直接将 HTML 插入 DOM。这也为您在调用可能需要更长时间执行或依赖 3rd 方通信的方法时提供了更大的灵活性,因为它允许您更轻松地呈现“加载”动画并报告错误。

于 2013-02-22T20:15:30.347 回答
1

This sounds like you are looking for some kind of CMS. There are already a bunch of CMS build for ASP.NET MVC, however you may build your own that will fulfill all your needs by storing views in DB. In this case this article might point you in the right direction.

于 2013-02-22T23:16:11.453 回答
0

在剃须刀中,您可以轻松做到这一点。您必须有一个用于布局模板的模型并将其绑定到您的剃须刀布局中。布局的每个部分都可以位于@if检查模型字段并动态创建每个部分的剃刀块中。

于 2013-02-22T18:29:57.470 回答