/ / Предаване на параметри на индексното действие - asp.net-mvc, viewbag

Предаване на параметри на индексното действие - asp.net-mvc, viewbag

Трябва да създам изглед за деца, който ще позволи на потребителя да вмъкне свързани данни, след като избере ред в основния изглед на мрежата.

Изгледът за деца трябва да получи идентификационен номер, който да посочва родителския ред.

Как мога да предам този параметър? ViewBag?

PS: Изгледите и контролерите са различни и детският изглед се отваря с помощта на Html.ActionLink към индексното действие на друг контролер.

Отговори:

0 за отговор № 1

Подайте идентификационния номер на родителя като параметър на начина на действие, който извиква детския изглед.

@Html.ActionLink("Add Related Data","Add",new { @id=364})

Заменете 364 с динамичната стойност от изгледа си

И в детското действие, получете обекта "Родител" от идентификационния номер и покажете, че в детска изложба. Ако приемем, че имате 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" />
}

0 за отговор № 2

Предайте го като низ на заявка, тъй като отваряте различно действие.


0 за отговор № 3

Можете да предавате параметри по няколко начина.

ViewBag.MyParam = "1";

ViewData("MyParam") = "1";

TempData("MyParam") = "1";

Забележка: Това е VB, така че C # ще бъде малко по-различно.

В противен случай можете да минете през querystring, както е посочено от Rob.