Я создал частичный вид, который позволяет пользователю вводить свой адрес электронной почты и добавлять его в список подписчиков. Первоначально я работал над этим стандартным сообщением, и все работало нормально.Нулевая модель при отправке данных с помощью 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>
Как я сказал, когда я пошагово код пост ударяет правильный контроллер, однако модель всегда проходящий через нуль.
Куда я иду не так?
Пытались ли вы изменить EmailAdress к HTML Helper? –
Да, я пробовал использовать @ Html.EditorFor (model => model.Email), но он все еще продолжался как null – alimac83
Что относительно @ Html.TextBoxFor (model => model.EmailAddress)? –