C# MVC期货模型中的传递函数

C# MVC期货模型中的传递函数,c#,asp.net-mvc,form-submit,asp.net-mvc-futures,C#,Asp.net Mvc,Form Submit,Asp.net Mvc Futures,对于3个不同的控制器,我有一个或多或少完全相同的视图。唯一的区别是他们在哪里张贴表格。所有这些控制器都派生自同一基类,并且视图包含一个表单,该表单将发布到该基类中的一个操作 我的视图当前如下所示: @model Models.Forms.ContactPersonForm @{ Layout = null; } <div class="modal-header"> <button type="button" class="close" data-dismiss=

对于3个不同的控制器,我有一个或多或少完全相同的视图。唯一的区别是他们在哪里张贴表格。所有这些控制器都派生自同一基类,并且视图包含一个表单,该表单将发布到该基类中的一个操作

我的视图当前如下所示:

@model Models.Forms.ContactPersonForm
@{
    Layout = null;
}
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title">Edit contact person</h4>
</div>
@using (Html.BeginForm<ProductsController>(x => x.EditContactPerson(null), FormMethod.Post))
{
    <div class="modal-body">
        @Html.EditorForModel()
    </div>
    <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">
            <span class="fa fa-times" area-hidden="true"></span> Close
        </button>
        <button type="submit" class="btn btn-primary">
            <span class="fa fa-floppy-o" area-hidden="true"></span> Save
        </button>
    </div>
}

但是我真的想用这个来代替,就像这样:

@Html.BeginForm<ProductsController>(x => x.EditContactPerson(null), FormMethod.Post)
@Html.BeginForm(x=>x.EditContactPerson(null),FormMethod.Post)
是否有一种方法可以使用模型来使用模型中的表达式渲染表单

类似于:

@Html.BeginForm<Model.ControllerType>(Model.ActionExpression, FormMethod.Post)
@Html.BeginForm(Model.ActionExpression,FormMethod.Post)

这样的东西怎么样:

@model Models.Forms.ContactPersonForm
@{
    Layout = null;
}
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title">Edit contact person</h4>
</div>
@if (Model.XYZ == "...")
{
    using (Html.BeginForm<ProductsController>(x => x.FirstAction(null), FormMethod.Post))
    {
        Html.RenderPartial("FormContentPartialView");
    }
}
else
{
    using (Html.BeginForm<ProductsController>(x => x.SecondAction(null), FormMethod.Post))
    {
        Html.RenderPartial("FormContentPartialView");
    }
}
@model.Forms.ContactPersonForm
@{
布局=空;
}
&时代;
编辑联系人
@如果(Model.XYZ==“…”)
{
使用(Html.BeginForm(x=>x.FirstAction(null),FormMethod.Post))
{
Html.RenderPartial(“FormContentPartialView”);
}
}
其他的
{
使用(Html.BeginForm(x=>x.SecondAction(null),FormMethod.Post))
{
Html.RenderPartial(“FormContentPartialView”);
}
}

我会使用简单的HTML标记,而不使用任何HTML助手扩展,您的问题就会得到解决:)@dawidr,是的,您完全正确。问题是,我一直在尝试所有的路由都是强类型的。你能使用DI模式并创建一个接口,比如IController,哦,顺便说一句……总计吗Guess@Chef_Code是的,大概是吧。这就是我尝试过的,但我没有让它工作,因为你需要有BeginForm。是的,我将探索它,我会回到你身边
@Html.BeginForm<Model.ControllerType>(Model.ActionExpression, FormMethod.Post)
@model Models.Forms.ContactPersonForm
@{
    Layout = null;
}
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
    <h4 class="modal-title">Edit contact person</h4>
</div>
@if (Model.XYZ == "...")
{
    using (Html.BeginForm<ProductsController>(x => x.FirstAction(null), FormMethod.Post))
    {
        Html.RenderPartial("FormContentPartialView");
    }
}
else
{
    using (Html.BeginForm<ProductsController>(x => x.SecondAction(null), FormMethod.Post))
    {
        Html.RenderPartial("FormContentPartialView");
    }
}