メイン グリッドビューで行を選択した後にユーザーが関連データを挿入できるようにする子ビューを作成する必要があります。
子ビューは、親行を示す ID を受け取る必要があります。
このパラメーターを渡すにはどうすればよいですか? ビューバッグ?
PS: ビューとコントローラーは異なり、別のコントローラーの Index アクションへの Html.ActionLink を使用して子ビューが開かれます。
メイン グリッドビューで行を選択した後にユーザーが関連データを挿入できるようにする子ビューを作成する必要があります。
子ビューは、親行を示す ID を受け取る必要があります。
このパラメーターを渡すにはどうすればよいですか? ビューバッグ?
PS: ビューとコントローラーは異なり、別のコントローラーの Index アクションへの Html.ActionLink を使用して子ビューが開かれます。
別のアクションを開くため、クエリ文字列として渡します。
いくつかの方法でパラメーターを渡すことができます。
ViewBag.MyParam = "1";
ViewData("MyParam") = "1";
TempData("MyParam") = "1";
注: これは VB なので、C# は少し異なります。
それ以外の場合は、Rob が述べたように、クエリ文字列を介して渡すことができます。
子ビューを呼び出すアクション メソッドに、親の ID をパラメーターとして渡します。
@Html.ActionLink("Add Related Data","Add",new { @id=364})
364 をビューの動的な値に置き換えます
子アクションで、ID から親オブジェクトを取得し、それを子ビューに表示します。ViewModel が子ビューに似ていると仮定します。
public class ChildDetails
{
public int ID { set;get;}
public string Note { set;get;}
public int ParentID { set;get;}
public string ParentName { set;get;}
}
親の詳細を取得し、子ビューの ViewModel で関連するプロパティ値を設定します。
public ActionResult Add(int id)
{
var parent=yourRepositary.Get(id);
ChildDetails childViewModel=new ChildDetails();
childViewModel.ParentID=id;
childViewModel.Name=parent.Name;
return View(childViewModel);
}
あなたの子ビューはChildDetails
クラスに強くバインドされます
@model ChildDetails
<h2>@Model.ParentName</h2>
@using(Html.BeginForm())
{
@Html.TextBoxFor(x=>x.Note)
@Html.HiddenFor(x=>x.ParentId)
<input type="submit" />
}