2015-04-23 5 views
1

У меня есть контроллер в MVC5 для формы заявки. Существует GET вернуть вид и POST принимать данные формы из приложения и обрабатывать его: -Действия ASP.NET MVC с таким же именем

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 вместо самотестирования контроллер, несмотря на то, что у него есть [HttpPost] на последнем.

Если я активно переименовал контроллер HTTPPost и перейду к нему, я вижу сообщение об ошибке сервера с сообщением о том, что его невозможно найти. Отправка формы приводит к сбою страницы.

Форма Код

@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> 

Спасибо, Майк.

+0

Удалить [ActionName («Применить»)] во всем коде. –

+0

ActionName («Применить») теперь удален из моего кода. На форме у меня есть с использованием (Html.BeginForm ("JobApply", "Form", FormMethod.Post, new {enctype = "multipart/form-data", @id = "ApplyForm"})) –

+0

Кроме того, теперь, когда эти изменения были сделаны, и я изменил сообщение на «JobApply». Я изменил контроллер на JobApply, приняв класс Apply как модель. Я получаю 404 Not Found. Возможно, проблема маршрутизации? –

ответ

0

Исправлено. Это заняло вторую пару глаз, но правило в web.config удаляло конечную косую черту с URL-адреса формы и не выполняло загрузку GET. Не знаю, почему это вызовет проблему, но это так.

Смежные вопросы