2

我们公司需要构建一个包含 50 多种表格的基于 Web 的业务线解决方案。其中很多将是中央数据库上的 CRUD。到目前为止,我们之前还没有处理过网络空间,所以这对我们来说都是相对较新的。

目前我们正计划将 ASP.net MVC 用于:

  • 可测试性(单元测试等)
  • 关注点分离
  • 更好的长期维护(根据我从其他帖子中收集到的信息,这可能成为 WebForms 的一个问题。)

然而,我们遇到了障碍。经过对各种论坛和教程视频的大量研究,我们意识到 ASP.net MVC 不支持拖放设计环境。

我们已经研究过在 ASP.net MVC 中使用代码模板等,这些肯定会加快在代码中构建视图的速度。事实上,大多数论坛都建议使用代码模板等。

但是,我们公司的应用程序构建和修改通常具有非常快的周转率。有时我们需要在接下来的一天或一周内推出更新。

我们觉得没有视图设计工具可能会在某种程度上阻碍我们。

到目前为止,我们已经考虑/调查了以下内容:

  • 用代码在 Visual Studio 中构建。在第二个屏幕上刷新在 IDE 旁边运行的网站。调整冲洗并重复。

  • 使用 Microsoft Expression 产品。(表达网络等)。构建视图等然后在 Visual Studio 中重新加载以处理后面的代码。但是我想我在这个不是 ASP.net MVC 中测试了 WebForms。

  • 使用诸如 Dreamweaver(或其他)之类的网页设计工具,然后将用于视图/页面的 html 复制到 Visual Studio 中,并在后面连接代码等。

  • 改用 LightSwitch(我们不想要 silverlight 的要求,这似乎对我们的要求过于简单,所以这是不可能的)

我们认为也许其他人也有类似的经历,可以分享他们的想法。

所以我的问题是,如果你们中的任何人有过类似的情况,你们使用什么工具来设计 ASP.net MVC 视图,同时保持快速轻松地构建新 UI 或进行调整的能力?

4

2 回答 2

2

在我看来,如果您遵循一些提示,在代码中构建 UI 比在拖放环境中构建 UI 更快:

使用表格进行布局

我知道语义狂热者会因为这样说而杀了我,但是您的表单会看起来更好,并且您不必在多个浏览器中与 CSS 作斗争。节省大量时间。

让你的观点尽可能赤裸裸

对于裸体,我的意思是让你的输入看起来像:

<tr>
    <th>@Html.LabelFor(model => model.Name)</th>
    <td>@Html.EditorFor(model => model.Name)
        @Html.ValidationMessageFor(model => model.Name)
    </td>
</tr>

依靠 MVC EditorFor、 Editor Templates 和 UIHint 为您的应用程序制作标准输入类型。在我的应用程序中,我有文本、十进制数字、整数、日期、时间、月份、注释 (textarea) 的模板。我已经调整了模板以允许更多属性用于自定义外观。

使用静态 SelectList 构建器

这以某种方式打破了 MVC 规则,但它也节省了大量时间,并且避免了多次处理控制器中的 SelectList

我通常有这种代码

public class ProductType
    public static SelectList GetSelectList(int? ValorActualSeleccionado, string IncludeAllItemsText = "") {
        var lista = DbHelper.CurrentDb().Fetch<ProductType>(BaseQuery());
        if (!IncludeAllItemsText.IsEmpty()) {
            lista.Insert(0, new ProductType { Name = IncludeAllItemsText, ProductTypeID = 0 });
        }
        return new SelectList(lista, "ProductTypeID", "Name", ValorActualSeleccionado);
    }

在视图中:

@Html.DropDownList("ProductTypeID", ProductType.GetSelectList(Model.ProductTypeID))

对添加和编辑使用相同的视图

您不需要查看收集几乎相同的数据,只需将其添加到您的控制器:

    public ViewResult NewProduct() {
        var VM = new Product();
        return View("Edit", VM );
    }

这到您的编辑视图:

@using (Html.BeginForm("Edit", "Product")) {

并在同一位置添加要添加或编辑的逻辑。

使用 jQuery

使用 jQuery,您将能够在系统范围内插入一些插件(如 Numeric 或 Date Dropdown),而无需更改视图中的代码

于 2012-07-23T14:14:07.837 回答
0

如果您需要良好的拖放体验并且没有 webdev 经验,我会继续使用 rad-controlls 和老式 ASP.NET。

如果您更接近 HTML、Javascript 和 HTTP,则 ASP.NET MVC 会大放异彩。在不了解 Web 的情况下,您可以使用老式 ASP.NET 和 rad-controlls 走得很远。

于 2012-07-23T14:22:48.150 回答