Asp.net mvc 基于复杂模块的ASP.NET MVC 2在数据库中创建新记录
我有一个非常棘手的问题要解决,我想了很多,搜索了很多,得出了一个结论,我将在下面提到。 问题是我有一个客户想要创建一个基于通用功能的网站,所以我们称之为模块,所以我想使用MVC Contrib便携区,这是插入模块的好主意,但我有一个大问题,假设我创建了一个博客模块,将在他想要的新网站中实现,现在一些用户有独特的需求,比如其中一个用户需要在每篇文章中添加图片库,或者在每篇文章中添加参考列表。 这在正常情况下是很容易的,因为你只有一个站点可以工作,所以你所要做的就是Asp.net mvc 基于复杂模块的ASP.NET MVC 2在数据库中创建新记录,asp.net-mvc,portable-areas,Asp.net Mvc,Portable Areas,我有一个非常棘手的问题要解决,我想了很多,搜索了很多,得出了一个结论,我将在下面提到。 问题是我有一个客户想要创建一个基于通用功能的网站,所以我们称之为模块,所以我想使用MVC Contrib便携区,这是插入模块的好主意,但我有一个大问题,假设我创建了一个博客模块,将在他想要的新网站中实现,现在一些用户有独特的需求,比如其中一个用户需要在每篇文章中添加图片库,或者在每篇文章中添加参考列表。 这在正常情况下是很容易的,因为你只有一个站点可以工作,所以你所要做的就是 将带有外键的新库表添加到Blo
- 将带有外键的新库表添加到Blog表
- 重新生成Linq2SQl代码并更新模型
- 将新表单元素添加到创建、编辑和删除视图中
- 在控制器中添加逻辑
- 如果新功能很酷 客户决定在 所有站点,然后我必须重复 为每个站点工作李>
- 如果功能是唯一的,它将在将来为我创建不一致性
- 因为新模块或加载项是 Dll,我怎样才能创建这样一个 “我的管理”面板中的功能 安装新的加载项或查找任何新的 添加模块/加载项拖动新DLL 到主应用程序
- 什么是最好的 练习创建安装 便携式区域内的程序, 如更新数据库、新路由等
private string GenerateId()
{
long i = 1;
foreach (byte b in Guid.NewGuid().ToByteArray())
{
i *= ((int)b + 1);
}
return string.Format("{0:x}", i - DateTime.Now.Ticks);
}
ViewData["FK"] = GenerateId();
但这是我的担忧
- 这条路可行还是简单明了 愚蠢的李>
- 这是一种技术吗 生成一个真正唯一的密钥
如果我的问题是蹩脚的,我非常抱歉,但这是最好的提问地点,我想很多人都希望有这样的功能,希望有人能回答我我认为这是一个很棒的问题。不久前,我开始使用MVC1开发一个CMS项目,我想在这里支持插件。我让它工作,以便管理员可以把一个新的插件程序集放到bin文件夹中,下一个应用程序启动时,它将扫描所有程序集的IPlugin(或其他)并加载它们。我将部分视图嵌入插件程序集,使其完全独立。每个插件放在页面上时都有一个唯一的标识符,插件的控制器知道如何使用该ID查询自己的表(存储库)中的数据。主应用程序对插件的模式一无所知 这里唯一的区别是,听起来你会在同一个数据库上运行多个网站,你需要区分每个网站需要哪个插件实例。我假设你在某个地方有一个键,指示它是哪个网站,可以通过外键为用户所在的页面只选择该网站的插件 我不确定这是否是一个答案,我只是想大声说出来。希望这能对讨论有所帮助 编辑:为了自动加载插件,我使用NInject的能力扫描程序集以查找iModule。我的IPlugin继承自
Ninject.Modules.injectModule
,所有插件都实现了IPlugin接口。然后在应用程序启动时,我有以下几行:
kernel.Load( "*.Plugin.dll" );
其中kernel是Ninject.IKernel,该行将扫描与该文件模式匹配的任何程序集,因此我可以插入Weather.Plugin.dll之类的程序集。这根本不是一个蹩脚的问题,但它是一个设计问题,需要一些思考。不过,我认为您的数据库设计不应该要求您创建自己的ID。我的直觉是,您需要一个包含所有插件信息的表(如果您正在这样做的话),并需要一个额外的列来区分插件。这将允许您对所有插件使用相同的Linq到SQL模式。如果某个插件有唯一的信息,您可以为该插件的唯一信息创建一个单独的Linq到SQL模式。单独的Linq到SQL模式可以与该插件一起使用,因此您无需在每次添加具有唯一信息的插件时更新主Linq到SQL模式。这只是解决这个问题的众多方法之一。谢谢大家,但是,你能告诉我插件模式中应该包括什么吗,只有插件表?另一个仍然存在的问题是如何将新插入的记录与