我不确定我是否只有解决方案设计问题,但我在Umbraco项目中有一个MVC表单。 Umbraco为名为BeginUmbracoForm
的表单提供了自己的帮助扩展。表单提交保存到Umbraco之外的常规SQL数据库中,因此我有一个正常的MVC项目来管理表单提交(管理员可以批准,拒绝和编辑提交)。
我遇到的问题是我在管理部分重用了Umbraco表单。创建一个具有完全相同字段的复制表单没有任何意义,只是为了编辑。
但是,我不能在管理项目中使用BeginUmbracoForm
,因为它是一个普通的MVC项目。此外,由于Umbraco控制器需要继承Controller
,我无法发布到同一SurfaceController
。
所以基本上,我需要这样的东西:
if (@Model.IsAdmin)
{
@using ( Html.BeginForm<AdminController>("EditForm") )
}
else
{
@using ( Html.BeginUmbracoForm<UmbracoController>("SubmitForm") )
}
我不确定这是否可行,我想我可能需要在Umbraco中创建管理部分。
答案 0 :(得分:0)
在Umbraco应用程序中创建管理部分是您的域管理员应该做出的安全决策。将代码库分成单独的Web项目而不是共享单个代码库是一个很好的案例。
理想情况下,您可以将业务逻辑封装到它们所服务的域中,而不是在它们之间引入严格的耦合。这样你的网站可以孤立存在。部署到不同的端点。使用不同的技术和安全主体来为其业务功能服务。
Wikipedia: Domain-driven design (Bounded context)
对于一个简单的问题看起来似乎是一个过度设计的解决方案,但我确信每个开发人员都可以重新计算一个项目,该项目最初是通过一些很快升级为 big-ball-of-mud < / em>申请。