2014-11-04 2 views
2

Я пытаюсь отобразить частичный вид, содержащий простую форму html. Я хочу отобразить форму с контроллера, поскольку я обрабатываю обратную передачу из перегруженного метода контроллера. Я пробовал @ Html.Action («ContactForm»), но я получаю исключение, потому что дочерние действия не могут перенаправляться.Частичные виды и html-формы Asp Mvc

Мой контроллер:

public ActionResult Index() 
{ 
    return View(); 
} 

[HttpGet] 
public ActionResult ContactForm() 
{ 
    return PartialView(new ContactForm()); 
} 

[HttpPost] 
public ActionResult ContactForm(ContactForm Contact) 
{ 
    return RedirectToAction("FormResults", new { ContactForm = Contact }); 
} 

public ActionResult FormResults(ContactForm Contact) 
{ 
    return PartialView(Contact); 
} 

Моя форма:

@using(Html.BeginForm()) 
{ 
    <h2>Contact Form</h2> 
    <div class="input-group"> 
     <h4>@Html.LabelFor(m => m.FirstName, "First Name")</h4> 
     @Html.TextBoxFor(m => m.FirstName, new { @class = "form-control", @placeholder = "First Name" }) 
    </div> 
    <div class="input-group"> 
     <h4>@Html.LabelFor(m => m.LastName, "Last Name")</h4> 
     @Html.TextBoxFor(m => m.LastName, new { @class = "form-control", @placeholder = "Last Name" }) 
    </div> 
    <div class="input-group"> 
     <h4>@Html.LabelFor(m => m.Email, "Email")</h4> 
     @Html.TextBoxFor(m => m.Email, new { @class = "form-control", @placeholder = "Email", @type = "text" }) 
    </div> 

    <input type="submit" class="btn btn-info" value="Submit" /> 
} 

Любая помощь от того, как я выполнил бы это было бы оценено.

ответ

1

попытки окружающей формы с DIV и определенным идентификатором и использованием:

@using(Ajax.BeginForm("ContactForm","YourController",new AjaxOptions() 
{ 
    InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "yourCertainId", 
    HTTPMethod = "POST" 
}) 

и ваш ActionMethod:

[HttpPost] 
public ActionResult ContactForm(ContactForm Contact) 
{ 
    return Partial("YourPartialName", Contact }); 
} 

убедитесь, что вы включили расслоение jqueryval на нижней часть вашей точки зрения ,

вам не нужен второй метод контроллера «FormResults»

0

Что-то вроде этого не работает для вас?

Я не думаю, что вам нужна переадресация.

[HttpPost] 
public ActionResult ContactForm(ContactForm Contact) 
{ 
    return PartialView("FormResults", Contact); 
} 

При этом используется перегрузка метода PartialView в классе контроллера

PartialView(string viewName, object model) 

.

Это позволяет использовать представление, не соответствующее имени метода ActionResult.

То же самое работает и для простого метода «Вид».

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