Передача значений формы из одного представления контроллера в другую форму в другом представлении контроллеров в asp MVC

Хорошо, я новичок в MVC и пытаюсь создать веб-страницу, на которой я могу перейти в небольшую форму с почтовым индексом и кнопкой, чтобы указать страницу, которая заполнит часть почтового индекса на странице цитаты.

Моя проблема в том, что у меня есть два контроллера homeController, у которых есть представление индекса с небольшим полем формы. Мне нужно передать почтовый индекс QuoteController, у которого есть собственное представление, заполненное новым почтовым индексом.

вход домашнего контроллера, indexview

 @using (Html.BeginForm("Quote", "Quote"))    
  <p>Move From Zip:</p>  
 <input type="text" name="Zip"/><br /> 
 <input type="submit" value="Next" name="next">

форма котировки для получения почтового индекса, на контроллере котировок, в представлении котировок

@Html.Label("Move From Zip ")<br />
@Html.TextBoxFor(m => m.MoveFromZip, "", new { maxlength = 5, @class =    "short-textbox" })

какой самый простой способ сделать это


person Community    schedule 05.02.2016    source источник
comment
вот вход домашнего контроллера   -  person    schedule 05.02.2016
comment
@using (Html.BeginForm(Quote, Quote)) { ‹p›Move From Zip:‹/p› ‹input type=text name=Zip placeholder=Enter Zip maxlength=5 /›‹br /› ‹input type=submit значение=следующее имя=следующий класс= id=› }   -  person    schedule 05.02.2016


Ответы (1)


В вашем индексном представлении HomeController вы можете сохранить действие формы на "Quote/Quote"

@using (Html.BeginForm("Quote", "Quote"))
{
  <input type="text" name="Zip" />
  <input type="submit" />
}

Создайте модель представления для представления метода действия Quote в QuoteController.

public class QuoteVm
{
  public string Zip { set;get;
}

и в методе действия Quote вашего QuoteController

[HttpPost]
public ActionResult Quote(QuoteVm model)
{
  return View(model);
}

и ваш просмотр котировок будет

@model QuoteVm
<p>Data passed(POSTED) from Index view</p>
@using(Html.BeginForm("QuoteSave","Quote"))
{  
  @Html.TextBoxFor(s=>s.Zip)
  <input type="submit" />
}

Теперь для отправки формы в этом представлении вам нужен еще один метод действия HttpPost.

[HttpPost]
public ActionResult QuoteSave(QuoteVm model)
{
   // to do : Do something and return something
}
person Shyju    schedule 05.02.2016
comment
Спасибо, сработало, но я не знаю, почему? Я использовал только второй блок кода, который вы предоставили внутри текущего класса QuoteModel, где была моя проверка, затем все, что я добавлял, это элементы в методе начала формы, и это сработало, остальные вещи не повлияли на передачу. - person ; 06.02.2016
comment
Однако есть еще одна проблема: когда данные передаются на страницу котировок, они запускают всю мою проверку, как мне это предотвратить. - person ; 06.02.2016
comment
@NickBooth Я не знаю, пройдет ли ваше редактирование, но в будущем вам следует указать, что вы исправляете опечатку (отсутствующая фигурная скобка во втором блоке кода), в идеале со ссылкой для подтверждения. - person BSMP; 13.08.2019