Asp.net mvc 条件形式动作?

Asp.net mvc 条件形式动作?,asp.net-mvc,umbraco,Asp.net Mvc,Umbraco,我不确定我是否只是有一个解决方案设计问题,但我在一个Umbraco项目中有一个MVC表单。Umbraco为名为BeginUmbracoForm的表单提供了自己的帮助程序扩展。表单提交保存到Umbraco之外的常规SQL数据库中,因此我有一个普通的MVC项目来管理表单提交(管理员可以批准、拒绝和编辑提交) 我遇到的问题是,我在管理部分重用了Umbraco表单。仅仅为了编辑而创建具有完全相同字段的重复表单是没有任何意义的 但是,我不能在管理项目中使用BeginUmbracoForm,因为它是一个普通

我不确定我是否只是有一个解决方案设计问题,但我在一个Umbraco项目中有一个MVC表单。Umbraco为名为
BeginUmbracoForm
的表单提供了自己的帮助程序扩展。表单提交保存到Umbraco之外的常规SQL数据库中,因此我有一个普通的MVC项目来管理表单提交(管理员可以批准、拒绝和编辑提交)

我遇到的问题是,我在管理部分重用了Umbraco表单。仅仅为了编辑而创建具有完全相同字段的重复表单是没有任何意义的

但是,我不能在管理项目中使用
BeginUmbracoForm
,因为它是一个普通的MVC项目。此外,由于Umbraco控制器需要从
SurfaceController
继承,因此我无法发布到相同的
控制器

所以基本上,我需要这样的东西:

if (@Model.IsAdmin)
{
    @using ( Html.BeginForm<AdminController>("EditForm") )
}
else
{
    @using ( Html.BeginUmbracoForm<UmbracoController>("SubmitForm") )
}
if(@Model.IsAdmin)
{
@使用(Html.BeginForm(“EditForm”))
}
其他的
{
@使用(Html.BeginUmbracoForm(“SubmitForm”))
}

我不确定这是否可行,我想我可能需要在Umbraco中创建管理部分。

在Umbraco应用程序中创建管理部分是您的域管理员应该做出的安全决策。有一个很好的例子可以将代码库分离到单独的web项目中,而不是共享单个代码库

理想情况下,您应该将业务逻辑封装到它们所服务的域中,而不是在它们之间引入严格的耦合。这样你的网站就可以独立存在了。可以部署到不同的端点。使用不同的技术和安全主体为其业务功能提供服务

对于一个简单的问题来说,这似乎是一个过度设计的解决方案,但我相信每个开发人员都可以讲述一个项目,该项目一开始就有一些黑客攻击,很快就升级为一个大的泥球应用程序