具有空控制器/动作的Html.BeginForm输出错误的动作URL

时间:2014-08-05 11:19:46

标签: c# asp.net-mvc routing html.beginform

我有两个AreasProfile(针对每个用户)和Admin(针对管理员)。有些用户可以拥有公司并在他们的个人资料中管理他们,管理员也可以在他们的区域内创建公司。

在管理区域,我有一个"_BaseForm"文件,我保存公共代码并调用不同的部分来填充表单中的字段,如: -

var content = string.Format("~/Areas/Admin/Views/{0}/_Form.cshtml", (string)ViewBag.FolderName);

@using (Html.BeginForm(null,null,FormMethod.Post,new { @enctype = "multipart/form-data" }))
{
    @Html.Partial(content)
}

问题在于,当我调用返回View的Add()函数时,它会获得正确的表单,但操作URL对应于Profile Area的控制器/操作: -

<form action="/Profile/Companies/Add" ..> <!-- it should be "/Admin/Companies/Add" -->

当我评论Add (Company)区域中的Profile函数时,它可以正常运行。

你能帮助我吗?

谢谢

1 个答案:

答案 0 :(得分:1)

只需将您的BeginForm更正为:

@using (Html.BeginForm(null,null,new{ area="Admin" },FormMethod.Post,new { @enctype = "multipart/form-data" }))
{}