我需要創建一個子視圖,該視圖允許用戶在主GridView上選擇一行後插入相關數據。將參數傳遞給索引操作
子視圖必須接收的ID將指示其是父行。
如何傳遞此參數? ViewBag?
PS:該視圖和控制器是不同的,並且子視圖是使用Html.ActionLink到另一個控制器的索引作用打開。
我需要創建一個子視圖,該視圖允許用戶在主GridView上選擇一行後插入相關數據。將參數傳遞給索引操作
子視圖必須接收的ID將指示其是父行。
如何傳遞此參數? ViewBag?
PS:該視圖和控制器是不同的,並且子視圖是使用Html.ActionLink到另一個控制器的索引作用打開。
傳遞父的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" />
}
將它作爲查詢字符串,因爲你打開不同的動作。
您可以通過多種方式傳遞參數。
ViewBag.MyParam = "1";
ViewData("MyParam") = "1";
TempData("MyParam") = "1";
注意:這是VB,所以C#會有些不同。
否則,您可以通過查詢字符串傳遞由羅布說。
我想利用現有的索引操作列出子項,而不是創建一個新的動作。可能嗎? –
您可以使用現有的操作。我寫了添加方法,使其成爲一個通用的例子 – Shyju