【发布时间】:2012-09-10 13:31:38
【问题描述】:
我需要创建一个子视图,允许用户在主网格视图上选择一行后插入相关数据。
子视图必须接收一个 ID,该 ID 将指示哪个是父行。
如何传递这个参数?查看包?
PS:视图和控制器不同,子视图使用 Html.ActionLink 打开另一个控制器的 Index 动作。
【问题讨论】:
标签: asp.net-mvc viewbag
我需要创建一个子视图,允许用户在主网格视图上选择一行后插入相关数据。
子视图必须接收一个 ID,该 ID 将指示哪个是父行。
如何传递这个参数?查看包?
PS:视图和控制器不同,子视图使用 Html.ActionLink 打开另一个控制器的 Index 动作。
【问题讨论】:
标签: asp.net-mvc viewbag
将父级的 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# 会有些不同。
否则,您可以通过 Rob 所述的查询字符串。
【讨论】: