2016-07-15 4 views
-1

私はすでにこの質問を投稿しましたが、誰も私のコメント/エラーに答えませんでした。私のインデックスviwの@ Html.TextBox( "SearchString")に入力されたテキストをセッション変数を使用して表示するにはどうすればよいですか?MVC C#セッションプロジェクト

HomeController.Cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Data.Entity; 
using Newproject.Models; 

namespace Newproject.Controllers 
{ 
public class HomeController : Controller 
    { 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    [HttpPost] 
    public ActionResult Gender(WelcomeVm model) 

    { 
     model.Genders = new List<SelectListItem> 
    { 
    new SelectListItem { Value="Male", Text="Male"}, 
    new SelectListItem { Value="Female", Text="Female"} 
    }; 
     return View(model); 
    } 
    [HttpPost] 
    public ActionResult Welcome(WelcomeVm model) 
    { 
     return View(model); 
    } 
    public object Final { get; set; } 
} 
} 

Index.cshtml

@{ 
ViewBag.Title = "Welcome"; 
} 

<br /> 
@Html.Label("Name") 
<br /> 
@using (Html.BeginForm("Gender", "Home", FormMethod.Post)) 
{ 
@Html.TextBox("Name"); 
<input id="btnSubmit" name="btnSubmit" placeholder="test" type="submit" value="Submit" /> 
} 

Gender.cs

using System.Collections.Generic; 
using System.Web.Mvc; 
public class WelcomeVm 
{ 
public string Name { set; get; } 
public string Gender { set; get; } 
public IEnumerable<SelectListItem> Genders { set; get; } 
} 

Gender.cshtml

@model WelcomeVm 
@using (Html.BeginForm("Welcome", "Home", FormMethod.Post)) 
{ 
<p>Hello @Model.Name what is your gender</p> 
@Html.DropDownListFor(m => m.Gender, Model.Genders) 
@Html.HiddenFor(s => s.Name) 
<input type="submit" /> 
} 

Welcome.cshtml

@{ 
ViewBag.Title = "Welcome"; 
} 

@model WelcomeVm 
<p>Hello @Model.Name who is a @Model.Gender</p> 
+0

であなたは答えを得られない場合同じ質問をもう一度聞くのは正しい方法ではありません。代わりに既存の質問を改善/編集し、人々がそれに答えるのに役立つ情報を追加します。 – M4N

+0

実際の質問で質問のタイトルを更新してください。ちょうど技術のキーワードを言っていると、あなたは訪問を少なくするでしょう。 –

答えて

1

データを渡すためにSessionまたはViewBagは必要ありません。あなたは単にあなたが持っているビューモデルを使うことができます。

だからあなたのindexビュー、

@Html.Label("Name") 
@using (Html.BeginForm("Gender", "Home")) 
{ 
    @Html.TextBox("Name"); 
    <input id="btnSubmit" name="btnSubmit" type="submit" value="Submit" /> 
} 

にし、あなたのGenderアクションメソッドであなたのパラメータの型と同じビューモデルを使用します。フォームが転記されると、デフォルトのモデルバインダーは投稿されたフォームの値をWelcomeVmクラスのオブジェクトにマップします。

[HttpPost] 
public ActionResult Gender(WelcomeVm model) 
{ 
    model.Genders = new List<SelectListItem> 
    { 
     new SelectListItem { Value="Male", Text="Male"}, 
     new SelectListItem { Value="Female", Text="Female"} 
    }; 
    return View(model); 
} 

およびGender.cshtmlビューは、同じビューモデルに強く型付けされています。

@model WelcomeVm 
@using (Html.BeginForm("Welcome", "Home", FormMethod.Post)) 
{ 
    <p>Hello @Model.Name what is your gender</p> 
    @Html.DropDownListFor(m => m.Gender, Model.Genders) 
    @Html.HiddenFor(s=>s.Name) 
    <input type="submit" /> 
} 

とウェルカムアクション

[HttpPost] 
public ActionResult Welcome(WelcomeVm model) 
{ 
    return View(model); 
} 

と再び強くおビューモデルに入力されWelcome.cshtmlビューで、

@model WelcomeVm 
<p>Hello @SearchString who is a @Model.Gender</p> 
+0

私のGender.cshtmlページで、エラーが表示されます。 @ Html.DropDownListFor(m => m.Gender、Model.Genders)は、使用されたコードでInvalidOperationExceptionが処理されなかったと言います。 – LohithT

+0

Shyjuと言ったようにすべてを行いましたが、インデックスページのテキストページに入力された名前はようこそページ – LohithT

+0

最初の問題は、GenerateアクションメソッドでGenderのコレクションを読み込んでいますか? 2番目のコメントでは、2番目のビュー(性別)で名前が表示されていますか? – Shyju