我在asp .net mvc3课程注册表中设计了一个视图。这是一个非常简单的形式,有姓名,父亲姓名,资格和提交按钮,按下提交按钮后我想用另一个视图显示信息。请建议我如何将信息从一个视图发送到另一个视图。
我的控制器类是:
namespace RegistrationForm.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
// ViewBag.Message = "Welcome to ASP.NET MVC!";
//return View();
return RedirectToAction("registrationView");
}
public ActionResult About()
{
return View();
}
public ActionResult registrationView()
{
return View();
}
}
}
我的观点是:
@ { Layout = null; }
registrationView 输入名字
</td>
<tr>
<td>
Enter Father Name
</td>
<td>
<input type="text" name="fname" id="fname" />
</td>
<tr>
<td>
Enter Qualification
</td>
<td>
<input type="text" name="qly" id="qly" />
</td>
</tr>
</table>
<input type="submit" value="submit" />
</div>
答案 0 :(得分:2)
好吧,之前我们遇到过这个问题,最好的方法就是定义一个这个页面可以使用的模型,然后在回发或重定向到另一个视图时使用这个模型对象。
对于您的情况,您可以在Models文件夹
中简单地定义此模型 ex:RegistrationModel.cs
文件,并在里面定义您需要的属性。
完成后,您需要再做两个步骤:
1-在您的GET操作方法中,创建一个新的RegistrationModel
对象,并将其提供给您的视图,而不是:
return View();
你需要这样的东西:
var registrationModel = new registrationModel();
return View(registrationModel);
2-将此模型用作POST
Action方法中的参数,类似
[HttpPost]
public ActionResult registrationView(RegistrationModel model)
{
// your code goes here
}
但不要忘记修改当前视图以使用提供的模型。一个节省时间的方法是创建一个新的虚拟视图,并使用预定义的模板“创建”来生成您的视图,MVC将生成所有连接的属性。然后将生成的代码复制到所需的视图中,并省略任何不需要的代码。
这是一个伪回复。如果您需要更多代码,请告诉我
答案 1 :(得分:0)
use ViewData to store the valu如 请记住它只会持续一次旅行,所以如果你再试一次,那么价值就会被清除。
namespace RegistrationForm.Controllers { public class HomeController : Controller { public ActionResult Index() { // ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewData["myData"] = "hello world";
//return View();
return RedirectToAction("registrationView");
}
public ActionResult About()
{
return View();
}
public ActionResult registrationView()
{
// get back my data
string data = ViewData["myData"] != null ? ViewData["myData"].ToString() : "";
return View();
}
}
您可以在重定向到registrationView后实际使用html / aspx / ascx上的ViewData值。
例如在registrationView.aspx上:
<div id="myDiv">
my data was: <%= ViewData["myData"] %>
</div>
答案 2 :(得分:0)
<% using Html.Form("<ActionName>") { %>
// utilize this HtmlHelper action to redirect this form to a different Action other than controller that called it.
<% } %>
答案 3 :(得分:0)
你可以简单地在你的方法参数列表中声明带有控件名称的参数。例如:
这里的控件有一个id“qly”
<input type="text" name="qly" id="qly" />
定义方法参数列表如下:
public ActionResult YourMethod(string qly)
{
//simply pass your qly to another view using ViewData, TempData, or ViewBag
,并在所需的视图中使用它
}
答案 4 :(得分:0)
You should use TempData
,用于在行动之间保持价值。
此示例来自MSDN(上面的链接):
public ActionResult InsertCustomer(string firstName, string lastName)
{
// Check for input errors.
if (String.IsNullOrEmpty(firstName) ||
String.IsNullOrEmpty(lastName))
{
InsertError error = new InsertError();
error.ErrorMessage = "Both names are required.";
error.OriginalFirstName = firstName;
error.OriginalLastName = lastName;
TempData["error"] = error; // sending data to the other action
return RedirectToAction("NewCustomer");
}
// No errors
// ...
return View();
}
要将数据发送到视图,您可以使用模型或ViewBag
。