2016-12-27 2 views
0

MVCアプリケーションを作成していますが、ビュー間でデータを渡したいと思います。MVCアプリケーションの複数のビュー間でデータを渡す

@model ClassDeclarationsThsesis.Models.AddGroupViewModel 

@{ 
    ViewBag.Title = "Add Groups"; 
} 

<h2>Add Groups to subjects</h2> 

@foreach (var user in Model.Users) 
{ 
    if (user.email.Replace(" ", String.Empty) == HttpContext.Current.User.Identity.Name) 
    { 
     if (user.user_type.Replace(" ", String.Empty) == 3.ToString() || user.user_type.Replace(" ", String.Empty) == 2.ToString()) 
     { 
      using (Html.BeginForm("AddGroup", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 
      { 
       @Html.AntiForgeryToken() 
       <h4>Create new groups.</h4> 
       <hr /> 
       @Html.ValidationSummary("", new { @class = "text-danger" }) 
       <div class="form-group"> 
        @{ 
         List<SelectListItem> listItems1 = new List<SelectListItem>(); 

        } 
        @foreach (var subject in Model.Subjects) 
        { 
         listItems1.Add(new SelectListItem 
         { 
          Text = subject.name, 
          Value = subject.name, 
          Selected = true 
         }); 
        } 
        @Html.LabelFor(m => m.subject_name, new { @class = "col-md-2 control-label" }) 
        <div class="col-md-10"> 
         @Html.DropDownListFor(m => m.subject_name, listItems1, new { @class = "form-control" }) 
        </div> 
       </div> 
       <div class="form-group"> 
        @Html.LabelFor(m => m.qty, new { @class = "col-md-2 control-label" }) 
        <div class="col-md-10"> 
         @Html.TextBoxFor(m => m.qty, new { @class = "form-control" }) 
        </div> 
       </div> 


       <div class="form-group"> 
        <div class="col-md-offset-2 col-md-10"> 
         <input type="submit" class="btn btn-default" value="Submit" /> 
        </div> 
       </div> 

          } 
         } 
         if (user.user_type.Replace(" ", String.Empty) == 1.ToString()) 
         { 
          <p>You do not have enough permissions to enter this page. Contact the administrator.</p> 
           } 

          } 
         } 

そして、これは私のコントローラ:

public ActionResult AddGroup(AddGroupViewModel model) 
{ 
    var entities = new ClassDeclarationsDBEntities1(); 
    var model1 = new AddGroupViewModel(); 
    model1.Subjects = entities.Subjects.ToList(); 
    model1.Users = entities.Users.ToList(); 
    // set your other properties too? 


    if (ModelState.IsValid) 
    { 

     return RedirectToAction("AddGroupsQty", "Account"); 
    } 
    return View(model1); 
} 

そして、何私が達成したいと考えているドロップダウンリストから選択したアイテムを渡すとAddGroupsQty表示するには、この数量変数
は、ここに私の最初の図であり、 。これはどうすればいいですか? AddGroupsQtyの私のコントローラーでは、これまでのところ単純な復帰があります。

+0

RouteConfig.csに新しいビューへのルートがありますか?または、入力の変更された値に基づいて現在のビューを再表示しようとしていますか? – Mike

+0

@ Mmcgowa3いいえ、私はそこにルートを追加しませんでした。私はこのビューの入力に応じて別のビューを表示しようとしています。 –

答えて

1

クエリ文字列を使用して値を渡すことができます。

return RedirectToAction("AddGroupsQty", "Account", 
             new { qty=model.qty,subject=model.subject_name); 

と仮定すると、あなたのAddGroupsQtyクエリ文字列の値を持つ新しいGETリクエストを発行するブラウザを行います数量と対象

public ActionResult AddGroupsQty(int qty,string subject) 
{ 
    // do something with the parameter 
    // to do : return something 
} 

これを受け入れるための2つのパラメータを持っています。あなたがそれを行うことを好むない場合はADdGroupsQtyからこれらの値を渡したい場合は、TempDataを

TempData["qty"]=model.qty; 
TempData["subject"]= model.subject_name; 
return RedirectToAction("AddGroupsQty", "Account"); 

そして、あなたのAddGroupsQtyアクション、

public ActionResult AddGroupsQty() 
{ 
    int qty=0; 
    string subjectName=string.Empty; 
    if(TempData["qty"]!=null) 
    { 
    qty = Convert.ToInt32(TempData["qty"]); 
    } 
    if(TempData["subject"]!=null) 
    { 
    subjectName = TempData["subject"]; 
    } 
    // Use this as needed 
    return View(); 
} 

のようにサーバ側の一時的な永続性mecahnismを使用することができますアクションを表示するには、ビューモデルまたはViewBag/ViewDataのいずれかを使用できます。

関連する問題