2016-06-15 20 views
0

WebMatrixでWebサイトを構築しています。ユーザーがメインページに自分の名前を入力してリダイレクトした後、その名前が別のフォームの結果に表示されるようにします。しかし、私のコードは動作していません。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を使用しているセッションオブジェクトを試してください。セッションは、そのユーザーのすべてのページで利用できます。あなたはInboundのPageDate [ "フルネームは"]あなたのアドバイスのためのhttp://www.mikesdotnetting.com/article/192/transferring-data-between-asp-net-web-pages

+0

ご協力ありがとうございます。しかし、私はそれらをすべて交換した後もそれは同じです。 – user7065687

+0

これは適切な解決策です。私は間違ったページにコードを書いたことが分かります(私はとても馬鹿だと感じます)。ありがとう。 – user7065687

0

は、私はあなたのコードでは非常に良いではない何かを見つける:フォームのアクションがcshtmlファイルに設定されているのはなぜ

  1. ?それは制御者の行動でなければならない。
  2. なぜハードコードされたフォームタグを使用していますか? Use @using(@Html.BeginForm('name', 'action', 'controller'...)
  3. なぜWebMatrixが必要ですか?第一 - かなり古い、第二にグリッド - あなたはフォームを持っています。

モデルを使用し、@ Html.BeginForm内に@Html.TextBoxFor(x=>x.UserName)を使用します。 2番目のフォームを含む別のページにリダイレクトするために、投稿しているアクションにフォームを投稿し、モデルを作成します。 postアクションは、私は、単一のページにサブページを組み合わせる場合InboundのPageDateだけ便利だと思います。この

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

感謝を参照してください、詳細についてはセッション[ "フルネーム"]

を使用してい

ので。私はウェブデザインを初めて勉強しています。たぶんこの本は昔のものです。 – user7065687

+0

@Weltenrand「Professional ASP.NET MVC 5」を試してみてください。タイトルに「Professional」という言葉が怖がらないようにしてください。それを始めるのはかなり簡単です。 it-book;で検索してください) – Alex

+0

既にダウンロードされています。ありがとうございました! – user7065687

関連する問題