2013-02-22 100 views
4

我最近开始学习ASP.NET Model View Controller (MVC)。这是非常独特的方法,它需要的网站,我注意到与dynamics潜力。这将大大提高维护。ASP.NET MVC动态设计

但我可以看到如何过度使用dynamics可能是不好的,特别是如果你偏离strongly typed model。所以我的问题是这样的...

我创建了一个布局,但我想布局为fluid。我希望设计在不影响我的逻辑的情况下变得非常容易。我知道你可以创建Master PagesMaster Content Pages,它可以容纳大部分布局。除此之外,我的使用仍然有限制。

有没有办法将这些Master PagesMaster Content Pages更改为真正的动态实体?本质上designer可以使用一个你看到的是你得到的字段我创建它允许整个网站被修改?

我最初的想法是创建一个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,不过他想。

+0

看看乌节路项目,人们可以提供自己的主题。它有一个区域的概念,每个主题都可以暴露。 – dbones 2013-02-22 23:30:00

+0

这听起来与Dot Net Nuke很相似。布局的某些部分分解为模块。 – Greg 2013-02-22 23:33:13

回答

1

不知道我是否完全理解您的要求.....但也许下面的前提会有兴趣吗?

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

这将取决于你使用的UI框架是如何工作的。这个想法是,你向Razor展示一个只包含Razor部分渲染视图集合的对象。为了。

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

+0

这是一个很棒的帖子,我会检查一下。 – Greg 2013-02-22 20:52:42

+0

它的烦人的一种,因为现在我正在寻找功能.....我找不到它!这是非常悲伤的,它非常漂亮。但是背后的技术前提仍然存在,只是我不能向你展示真正的交易。我相信Google News的工作方式与此相同,但编辑远不如性感。 – Quibblesome 2013-02-22 22:54:53

+0

如果你确实找到它,我很乐意看到它。 – Greg 2013-02-22 22:59:01

0

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

+0

谢谢你的帖子。因此,使用Razor来检查模型中的字段,以便从该模型中动态生成每个单独的方面?我理解正确吗? – Greg 2013-02-22 18:50:44

+0

为了清楚起见,你想要做的是为控制器动作动态生成视图,而不是为每个视图手动创建剃刀模板? – Jack 2013-02-22 19:12:56

+0

我想要做的就是让'Razor Layout'动态改变。我看不到'@ ViewBag'在整个代码中都是有益的。但是我希望'Divs'能够在飞行中被修改或添加。如果没有意义,我会尝试更好地对其进行修改。 – Greg 2013-02-22 19:52:54

1

这听起来像你正在寻找某种CMS。已经有一堆CMS build for ASP.NET MVC,但是你可以建立你自己的,通过在数据库中存储视图来满足你所有的需求。在这种情况下,this article可能会为您指出正确的方向。

+0

我希望避免CMS,其中一些方面的表现像一个,但我想避免它们。主要是因为它们是一般的而不是特定于业务的。我知道Umbraco是MVC,但是你知道任何不那么广泛的吗? – Greg 2013-02-22 23:27:00