2014-02-09 3 views
0

Я новичок в MVC 4 и бритву, у меня есть вид макета содержит форму, расположенную в частичном,форма проводки находится в частичном

Моя модель:

public class SubscribeModel 
{ 
    [Required(ErrorMessage = "Veuillez saisir votre adresse mail pour s'inscrire ...")] 
    [EmailAddress(ErrorMessage = "Vous devez saisir une adresse mail valide \"Ex: [email protected]\"")] 
    public string SubEmail { get; set; } 
} 

Макет делают частичный вид «_subscribe "Wich содержит форму для регистрации на рассылку:

<body> 
    <div id="container"> 
     <header> 
      <div id="banner"> 
       @Html.Partial("~/Views/Soscom/_Subscribe.cshtml") 
      </div> 
     .... 
</body> 

мой частичный вид "_Subscribe":

@model SoscomAppMvc.Models.SubscribeModel 

@using (Html.BeginForm("Subscribe", "Soscom")) 
{ 
    @Html.TextBoxFor(m => m.SubEmail, new { placeholder = "Email pour s'inscrire à la newsletter", @class = "subscribebox", maxlength = "70" }) 
    @Html.ValidationMessageFor(m => m.SubEmail) 
    <input class="subscribeBtn" type="submit" value="s'inscrire"> 
} 

Я использую HttpGet метод действий для отправки модели с частичным видом «_subscribe»:

[HttpGet] 
    public PartialViewResult Subscribe() 
    { 
     return PartialView("_Subscribe", new SubscribeModel()); 
    } 

но когда я использовать HttpPost действия, приведенные ниже, я получил частичный вид без макета страницы ??

[HttpPost] 
    public ActionResult Subscribe(SubscribeModel subscribe) 
    { 
     if (!ModelState.IsValid) 
      return PartialView("_Subscribe", subscribe); 
     return View(subscribe); 
    } 

Вопросы:

есть способ, чтобы включить в ответ сообщение в текущем представлении? Пожалуйста, дайте мне знать, если я ошибаюсь или что-то неправильно понял.

+0

Я думаю ** шаблонные помощники ** могут вам помочь. Взгляните на эту ссылку - [Templated Helpers] (http://lostechies.com/jimmybogard/2011/09/07/building-forms-for-deep-view-model-graphs-in-asp-net-mvc/). Надеюсь, у вас есть идея. –

ответ

0

Частицы - это всего лишь способ повторно использовать немного HTML в нескольких представлениях. После того, как страница будет отправлена ​​пользователю и отображена в браузере, тот факт, что у вас есть одна или несколько частей на странице, не имеет значения. Если вы сделаете традиционный POST, он изменит всю страницу, потому что это то, как все работает.

Я думаю, что вы пытаетесь достичь, это сделать POST и только сменить участок на странице, не запрашивая полную перезагрузку страницы. Это требует AJAX. Вам нужно поймать и обработать событие отправки формы с помощью JavaScript, выдать запрос POST с данными с последовательной формой с помощью AJAX и, наконец, заменить содержимое узла DOM с возвращенным HTML на успех.

+0

Благодарим вас за ответ, это то, что мне нужно понять, но я не знаю, как использовать ajax. поэтому я буду искать другое решение, причина, по которой я думал об использовании частичных представлений, состоит в том, что у меня есть несколько форм в моем представлении макета, теперь мой вопрос заключается в том, как управлять его формами и как отправлять соответствующую модель каждой из их? – YouneL

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