PageData无法在WebMatrix中传递数据

时间:2016-06-15 11:51:25

标签: c# asp.net razor webmatrix

我正在使用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>

但我在mainFormPageData["fullname"]PageData["redir"]提交的任何价值似乎都没有价值。有什么问题?

任何帮助都将不胜感激。

2 个答案:

答案 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)

我发现代码中的内容不太好:

  1. 为什么您的表单操作设置为cshtml文件?它必须是控制器中的动作;
  2. 您为什么使用“硬编码”表格标签?使用@using(@Html.BeginForm('name', 'action', 'controller'...)
  3. 为什么需要WebMatrix?第一个 - 它很老了,第二个用于网格 - 你有一个表格。
  4. 使用模型,并在@ Html.BeginForm中使用@Html.TextBoxFor(x=>x.UserName)。 然后在您要发布的操作中发布表单,以重定向到包含第二个表单的另一个页面,并拥有一个模型。 post操作应该看起来像这样

    [HttpPost]
    public ActionResult RedirectToAnotherForm(MyModel model)
    {
    return View('SecondFormView', new SecondFormModel{
    userName = model.name
    })
    }