1

我需要创建一个子视图,允许用户在主网格视图上选择一行后插入相关数据。

子视图必须接收一个 ID,该 ID 将指示哪个是父行。

我怎样才能传递这个参数?查看包?

PS:视图和控制器是不同的,子视图使用 Html.ActionLink 打开到另一个控制器的 Index 动作。

4

3 回答 3

0

将其作为查询字符串传递,因为您正在打开不同的操作。

于 2012-09-10T13:34:20.027 回答
0

您可以通过多种方式传递参数。

ViewBag.MyParam = "1";

ViewData("MyParam") = "1";

TempData("MyParam") = "1";

注意:这是 VB,所以 C# 会有些不同。

否则,您可以通过 Rob 所述的查询字符串传递。

于 2012-09-10T13:35:37.277 回答
0

将父 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);
}

您的 Child 视图将被强烈绑定到ChildDetails

@model ChildDetails

<h2>@Model.ParentName</h2>
@using(Html.BeginForm())
{
  @Html.TextBoxFor(x=>x.Note)
  @Html.HiddenFor(x=>x.ParentId)
  <input type="submit" />
}
于 2012-09-10T13:47:20.593 回答