在asp MVC中的不同控制器视图上将表单值从一个控制器视图传递到另一个表单

时间:2016-02-05 19:45:23

标签: asp.net-mvc session model-view-controller tempdata

好的我是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">

报价表单,用于在报价控制器上的报价视图

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

这是最简单的方法

1 个答案:

答案 0 :(得分:1)

在HomeController的Index视图中,您可以将表单操作保持为"Quote/Quote"

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

QuoteController

中为您的报价操作方法视图创建一个视图模型
public class QuoteVm
{
  public string Zip { set;get;
}

并在你的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
}