how to make a wizard with ASP.Net MVC 各ページにはそれぞれ独自のdivがありますが、各divは実際には同じページに配置されています。今、2つの問題があります...私はMVCを初めて使い、次のページに進む前に何らかの検証をしたいと考えています。検証の範囲は単純なテキストボックス(そこにデータがありますか?)から、正しい形式のテキストボックスのデータです。ドロップダウンリストに項目があるかどうか、リストボックスに項目があるかどうか(相互に排他的なリストボックス)。だから、ページング/ソートのテーブルをいくつかのページがユーザーがリストから項目を選択し、その項目を変更するか、または新しい項目を追加するように選択すると、それは何に依存するか、必要に応じて、最初のページで残りのページにデータを入力します。ここset div visible fasle in get method of controllerまだそれは私のために動作しませんから位置検証後にdivを表示する
public ActionResult ContinueToCorr(string Number, string Rev)
{
ViewData["DivIsVisible"] = true;
return RedirectToAction("../Wizard/Index/1");
}
:今、私はこれを試してみました。
また、私は以下のことをしたいと思います。ユーザーがウィザードを起動する前に、選択ページが表示されるように(明らかに)選択した後、IDは localhost:xxxx/Wizard/'PartNumber'/'PageNumberOfWizard'ユーザーが部品番号12345を選択してウィザードを開始すると、ページ2の場合はlocalhost:xxxx/Wizard/12345/1(1ページ)およびlocalhost:xxxx/Wizard/12345/2にリダイレクトされます。次のdivを表示し、検証が成功した後に前の項目を隠すページ。
routes.MapRoute(
"Wizard", // Route name
"Wizard/{PartNum}/{PageId}", // URL with parameters
new { controller = "Wizard", action = "Index" } // Parameter defaults
);
だから、それかのように見えます:
最後に、私が思い付いた私は、Webアドレスに前に欲しかったものを手に入れるために、ルーティングのためasaxファイルを再生することを試みたが、これはあります常にウィザードコントローラのIndexメソッドを呼び出します。
今、私は私のビューページで、次の試してみました:
次のページに継続する前に、検証プロセスを開始するには、そのボタンのための新しい特定の機能を呼び出すために、フォーム内の各ボタンを取り巻く<% Html.BeginForm("ContinueToPage", "Wizard", FormMethod.Post); %>
<div class="span-87 buttons">
<input type="submit" value="Continue" name="button" />
</div>
<% Html.EndForm(); %>
とコードの後ろは次のようになります。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ContinueToCorr(string Number, string Rev)
{
//if (String.IsNullOrEmpty(Number))
// ModelState.AddModelError("Number", "Number is required");
//if (String.IsNullOrEmpty(TPSSWRevision))
// ModelState.AddModelError("Rev", "Revision is required");
//if (!ModelState.IsValid)
// return View();
ViewData["DivIsVisible"] = true;
return RedirectToAction("../Wizard/Index/1");
}
完全に正しければわかりませんが、私はここでサークルを走っているように感じます。どうもありがとう。申し訳ありませんが、私はできるだけ詳細にしたいと思っていました。また、私はこれを含めました:
<script runat="server">
protected bool DivIsVisible {
get {
return ViewData["DivIsVisible"] != null && (bool)ViewData["DivIsVisible"];
}
}
</script>
ビューでも、何もありません。
私のインデックス(この場合、このインデックスにはパラメータがありません)では、私はちょうど戻り値View()を持っています。私がそれを行うと、どこの場所でもContinueToCorr.aspxが見つからないというエラーが表示されます。私はあなたが関数の下に戻りView()を持っていたとしたら、その関数の名前が付けられたViewを探しました。この例ではIndexですか?何か不足していますか? – dangerisgo
また、パラメータを使用してインデックスに何を渡すのですか? – dangerisgo
いつも...レンダリングされたビューを強制したい場合は、return View( "Index"); 私はあなたの2番目のコメントを理解していません。私はあなたがそこに置くルーティング/ウィザード/インデックス/ 1のためにあなたがあなたのインデックスアクションに "1"を渡したいと思った。 – Francisco