我正在使用WebMatrix构建一个网站。我希望用户在主页面中输入他们的名字,重定向后,他们的名字将显示在另一个表格的结果中。但我的代码无效。
这是主页的摘录:
@{
if (IsPost) {
PageData["fullname"] = String.Format("{0} {1}", Request.Form["mainForename"], Request.Form["mainSurname"]);
PageData["redir"] = Request.Form["goTo"];
}
}
<form name="mainForm" id="mainForm" method="post" action="foo.cshtml" onsubmit="return mainValid(this);">
<h2>Please enter your name:</h2>
<label for="mainForename" class="label">Forename:</label>
<input type="text" name="mainForename" id="mainForename">
<label for="mainSurname" class="label">Surname:</label>
<input type="text" name="mainSurname" id="mainSurname">
<input type="submit" name="goTo" value="Go to Form 1">
<input type="submit" name="goTo" value="Go to Form 2">
</form>
这是主页面指向的页面的片段:
@{
if (IsPost) {
var display = PageData["fullname"];
}
}
<form name="form1" id="form1" method="post" onsubmit="return Valid(this);">
<!-- some HTML code -->
<input type="submit" name="submit" value="Get results">
<p>@Html.Raw(display)</p>
</form>
但我在mainForm
,PageData["fullname"]
和PageData["redir"]
提交的任何价值似乎都没有价值。有什么问题?
任何帮助都将不胜感激。
答案 0 :(得分:1)
我认为PageData仅在将子页面组合到单个页面时才有用。
相反,请尝试使用PageData的Session对象。会话将适用于所有用户的页面。
所以你在哪里有PageData [&#34;全名&#34;]使用Session [&#34; fullname&#34;]
有关详细信息,请参阅http://www.mikesdotnetting.com/article/192/transferring-data-between-asp-net-web-pages
答案 1 :(得分:0)
我发现代码中的内容不太好:
cshtml
文件?它必须是控制器中的动作; @using(@Html.BeginForm('name', 'action', 'controller'...)
使用模型,并在@ Html.BeginForm中使用@Html.TextBoxFor(x=>x.UserName)
。
然后在您要发布的操作中发布表单,以重定向到包含第二个表单的另一个页面,并拥有一个模型。 post
操作应该看起来像这样
[HttpPost]
public ActionResult RedirectToAnotherForm(MyModel model)
{
return View('SecondFormView', new SecondFormModel{
userName = model.name
})
}