2016-06-15 54 views
0

我正在用WebMatrix構建網站。我希望用戶在主頁面輸入他們的名字,重定向後他們的名字將顯示在另一個表格的結果中。但我的代碼不起作用。PageData無法在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"]似乎沒有任何價值。問題是什麼?

任何幫助,將不勝感激。

回答

1

我想結合子頁面到一個單一的頁面時PageData纔有用。

而是嘗試使用PageData的Session對象。會話將可用於所有該用戶的頁面。

所以,你必須PageData [ 「全名」]使用Session [ 「全名」]

有關詳細信息,請參閱http://www.mikesdotnetting.com/article/192/transferring-data-between-asp-net-web-pages

+0

感謝您的幫助。但是在我將它們全部替換之後,它仍然是一樣的。 – user7065687

+0

這是正確的解決方案。原來我寫了錯誤的頁面上的代碼(該死的我覺得很愚蠢)。謝謝。 – user7065687

0

我找到的東西,這不是挺好的在你的代碼:

  1. 爲什麼你的表單動作設置爲cshtml文件?它必須是一個控制者的行爲;
  2. 爲什麼使用「硬編碼」表單標籤?使用@using(@Html.BeginForm('name', 'action', 'controller'...)
  3. 爲什麼你需要WebMatrix?第一 - 它非常古老,第二個用於網格 - 你有一個表格。

使用模型,並在@ Html.BeginForm中使用@Html.TextBoxFor(x=>x.UserName)。 然後在發佈的操作中發佈表單,以重定向到包含第二表單的另一個頁面,並創建一個模型。該post行動應該以某種方式這樣

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

謝謝你的建議。我對網頁設計很陌生,我正在閱讀一本書中的例子。也許這本書是老式的。 – user7065687

+0

@Weltenrand嘗試「專業ASP.NET MVC 5」,不要害怕標題中的「專業」。開始使用它非常容易。在其上搜索它;) – Alex

+0

已經下載。謝謝! – user7065687