在我的 Web 开发公司,我们有很多设计师,他们具有以下开发知识和经验:
- 客户端网络语言(HTML、CSS、JavaScript)
- 基本数据库设计(如何创建表、关系等),以及
- 基本 SQL
问题是这些人不懂服务器端语言,比如 C#。我们希望为他们提供一个选项,以利用他们当前的知识创建 Web 应用程序。
基本上,他们应该能够创建数据网格、添加/编辑表单等,而无需使用完整的服务器端语言,例如 C# 或 PHP。
我们不想在这里创造新的巨大新技术。我们想要一个简单的解决方案,它易于理解和维护,并且可能有点开源。
我们考虑为 ASP.NET Razor 添加一个扩展,看起来像这样:
@DB(table="pages", where="id > 15")
<ul>
@while (row.Next()) {
<li><a href="@row.URL">@row.Name</a></li>
}
</ul>
就性能、设计模式、代码风格和安全性(SQL 注入)而言,这是一个好的解决方案吗?
有什么开源的吗?
你还有其他建议吗?
以下是使用此样式的简单应用程序的一些示例:
/apps/pages/index.html
@(DB.Select(table: "pages",
where: "id = ? and date > ?",
params: new[] { Request.QueryString["ID"], Request.QueryString["Date"] }))
<html>
<body>
<ul>
@foreach (var row in Model) {
<li><a href="@row.URL">@row.Name</a></li>
}
</ul>
</body>
</html>
/apps/pages/create.html
@(DB.InsertOnPost(table: "pages",
fields: "name, description, date",
values: "?, ?, Now",
params: new[] { Request.Form["Name"], Request.Form["Description"] }))
@RedirectOnPost("/pages")
<form action="/pages/create" method=”post”>
<div>
<label for="name">Name</label>
<input type="text" name="name" />
</div>
<div>
<label for="description">Description</label>
<textarea name="description"></textarea>
</div>
</form>
/apps/pages/edit.html
@(DB.UpdateOnPost(table: "pages",
set: "name = ?, description = ?",
where: "id = ?",
params: new[] { Request.Form["Name"], Request.Form["Description"],
Request.QueryString["ID"] }))
@RedirectOnPost("/pages")
@(DB.Select(table: "pages",
where: "id = ?",
params: new[] { Request.QueryString["ID"] })
<form action="/pages/edit" method="post">
<div>
<label for="name">Name</label>
<input type="text" name="name" value="@Model.Name" />
</div>
<div>
<label for="description">Description</label>
<textarea name="description">@Model.Description</textarea>
</div>
</form>