2

だから私はURLアクションを持っています

<a href="@Url.Action("Create","Teacher", new { createAndAssign = true, teacherID = Model.AccountID })">Create new teacher & assign to account.</a>

これは、createAndAssignとteacherIDの2つのrouteValuesを渡します。

先生/作成ページに移動すると、URLは次のようになります。

.../Teacher/Create?createAndAssign=True&teacherID=ea817321-5633-4fdc-b388-5dba2c4a728e

いいですね、これが欲しいです。POSTして教師を作成する場合、createAndAssignとteacherIDの値を取得するにはどうすればよいですか?

4

2 に答える 2

4

フォームの非表示変数にクエリ文字列値を設定し、GETアクションメソッドでレンダリングして、POSTアクションメソッドで受け入れることができます。

GETアクションによってレンダリングされたビュー

@using (Html.BeginForm())
{
 //Other form elements also
  @Html.Hidden("teacher",@Request.QueryString["teacherID"] as string)
  @Html.Hidden("createAndAssign",@Request.QueryString["createAndAssign"] 
                                                                    as string)
  <input type="submit" />
}

これteacherで、アクションメソッドにパラメーターとcreateAndAssignパラメーターHttpPostが含まれるようになり、フォームを送信したときに使用できるようになります。

[HttpPost]
public ActionResult Create(string teacher,string createAndAssign)
{
     //Save and Redirect      
}

あなたの意見が強くタイプされている場合(これは私の個人的な好みです)、それは非常に簡単です、

public ActionResult GET(string teacherID,string createdAndAssing)
{
   var yourVMObject=new YourViewModel();
   yourVMObject.TeacherID=teacherID;
   yourVMObject.CreateAndAssign=createdAndAssing;
   return View(createdAndAssing);
}

強くタイプされたビューでは、

@model YourViewModel
@using (Html.BeginForm())
{
 //Other form elements also
  @Html.HiddenFor(x=>x.TeacherID)
  @Html.HiddenFor(x=>x.CreateAndAssign)                                     
  <input type="submit" />
}

そしてあなたのPOST行動で

[HttpPost]
public ActionResult Create(YourViewModel model)
{
     //look for model.TeacherID
     //Save and Redirect      
}
于 2012-09-19T14:58:40.910 に答える
1

クエリ文字列から、または次のようなコントローラのパラメータとして値を取得できます

var x =Request.QueryString["createAndAssign"];

また

public ActionResult Create(bool createAndAssign, string teacherID){


 return View();
}
于 2012-09-19T14:49:50.677 に答える