2015-05-26 4 views
1

Я создал частичный вид, который позволяет пользователю вводить свой адрес электронной почты и добавлять его в список подписчиков. Первоначально я работал над этим стандартным сообщением, и все работало нормально.Нулевая модель при отправке данных с помощью Ajax.BeginForm

Однако теперь я пытаюсь сделать это ajax-вызовом и по какой-то причине, хотя форма отправляется правильному контроллеру, модель всегда проходит через нуль, и я не могу понять, почему.

Вот мои взгляды: вид

Родитель:

@Html.Partial("Shared/Newsletter/NewsletterForm", new NewsletterSubscriber()) 

Форма парциальное:

@using (Ajax.BeginForm("NewsletterSignUp", "Newsletter", new AjaxOptions { HttpMethod = "POST" })) 
{ 
    <input type="text" name="EmailAddress" id="newsletter-email" class="basic-input" placeholder="Email Address"> 
    <button id="submit-newsletter" class="basic-submit">Sign Up</button> 
    <p id="status"></p> 
} 

Контроллер:

[HttpPost] 
public ActionResult NewsletterSignUp(NewsletterSubscriber model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return Content("Please enter a valid e-mail address"); 
    } 

    // Do logic...   
} 

модели:

public class NewsletterSubscriber 
{ 
    [Required] 
    [EmailAddress] 
    [StringLength(300)] 
    public string EmailAddress { get; set; } 
} 

Сценарии:

<script src="/scripts/jquery.validate.min.js"></script> 
    <script src="/scripts/jquery.validate.unobtrusive.min.js"></script> 
    <script src="/scripts/jquery.unobtrusive-ajax.min.js"></script> 
    <script> 
     $(function() { 

      $('#submit-newsletter').on('click', function(e) { 
       e.preventDefault(); 

       $.post('/umbraco/surface/Newsletter/NewsletterSignUp', function (data) { 
        console.log(data); 
        $('#status').show().text(data); 
       }); 
      }); 

     }); 
    </script> 

Как я сказал, когда я пошагово код пост ударяет правильный контроллер, однако модель всегда проходящий через нуль.

Куда я иду не так?

+0

Пытались ли вы изменить EmailAdress к HTML Helper? –

+0

Да, я пробовал использовать @ Html.EditorFor (model => model.Email), но он все еще продолжался как null – alimac83

+0

Что относительно @ Html.TextBoxFor (model => model.EmailAddress)? –

ответ

0

Я только что понял, что у меня была форма ajax, обрабатывающая представление для меня, и я пытался вручную отправить форму в другом скрипте. Как только я удалил дополнительный скрипт, он сработал.

(Это конец долгого дня, и я пропустил эту очевидную ошибку!)

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