C# 具有相同名称的ASP.NET MVC控制器操作

C# 具有相同名称的ASP.NET MVC控制器操作,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-5,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 5,我在MVC5中有一个控制器,用于申请表格。有一个GET返回视图,还有一个POST从应用程序获取表单数据并对其进行处理:- public ActionResult Apply(string jobReference) { Apply form = new Apply(); Session[Settings.JOBREFERENCE] = jobReference; return View(form); } [HttpPost] [ValidateAntiForgeryToken

我在MVC5中有一个控制器,用于申请表格。有一个GET返回视图,还有一个POST从应用程序获取表单数据并对其进行处理:-

public ActionResult Apply(string jobReference)
{
   Apply form = new Apply();
   Session[Settings.JOBREFERENCE] = jobReference;
   return View(form);
}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Apply(Apply form)
{
    if (ModelState.IsValid)
    {
    }
}
当我按提交表单时,它调用GET控制器而不是POST控制器,尽管后者上有[HttpPost]

如果我主动重命名HTTPPost控制器并导航到它,我会看到一个服务器错误,并显示一条消息说找不到它。提交表单会导致页面崩溃

表格代码

谢谢,
迈克。

已经修好了。这花了第二双眼睛,但web.config中的一条规则是从表单post URL中删除尾随斜杠,它默认为加载GET。不知道为什么会出现问题,但确实如此。

在所有代码中删除[ActionNameApply]。ActionNameApply现在已从我的代码中删除。在我使用Html.BeginFormJobApply、Form、FormMethod.Post、new{enctype=multipart/Form data、@id=ApplyForm}的表单上,现在已经做了这些更改,我已经将Post更改为JobApply。我已将控制器更改为JobApply,接受Apply类作为模型。我收到404找不到。可能是路由问题?@MikeUpjohn您也需要发布表单代码。您需要确保您确实提交了一篇文章,您可能有一个actionlink,而不是post类型的输入。您确定您的post表单中包含@Html.AntiForgeryToken吗?
    @model Salt.Models.Apply
<div class='applyForRoleExt popupBox'>
    <a href="#" class="closePopup"><img src="/img/closePopup.png" alt="close" /></a>
    <div class="innerContainer">
        @using (Html.BeginForm("Apply", "Form", FormMethod.Post, new { enctype = "multipart/form-data", @id = "ApplyForm" }))
        {
            @Html.AntiForgeryToken()
            <h6>Apply for this role</h6>
            @*<div class="haveAccount">
                    <span>Have an account? Apply quickly by logging in now</span>
                    <a href="#" class="loginApply">Login to my account</a>
                </div>*@
            <div class="leftCol">
                <label>Name<span>*</span></label>
                <div class="inputBox">
                    @Html.TextBoxFor(m => m.Name)
                </div>
                <label>Email Address<span>*</span></label>
                <div class="inputBox">
                    @Html.TextBoxFor(m => m.EmailAddress)
                </div>
                <label>Telephone Number<span>*</span></label>
                <div class="inputBox">
                    @Html.TextBoxFor(m => m.TelephoneNumber)
                </div>
                <label>Portfolio Link<span>*</span></label>
                <div class="inputBox">
                    @Html.TextBoxFor(m => m.PortfolioLink)
                </div>
            </div>
            <div class="rightCol">
                <label>CV Upload</label>
                <div class="inputBox">
                    @Html.TextBoxFor(m => m.CV, new { @type = "file" })
                </div>
                <label>Covering Note</label>
                <div class="inputArea">
                    @Html.TextAreaFor(m => m.CoveringNote)
                </div>
            </div>
            <div class="actions">
                <p class="terms">By submitting this form you consent to Salt Recruitment processing your personal data in accordance with our privacy policy and agree to future contact material.</p>
                <!--<button class="submit">Apply Now</button>-->
                <input type="submit" name="submit" value="Apply Now" />
            </div>
        }
    </div>
</div>
<script type="text/javascript">
    $(document).ready(function () {
        $.validator.unobtrusive.parse("#ApplyForm");
    });
</script>