Какой самый идиоматичный способ перенаправить на дочернюю страницу создания в ASP.NET? - PullRequest
0 голосов
/ 21 апреля 2019

Предположим, что модель Parent имеет отношение один ко многим к нескольким Child моделям. На странице сведений о Parent я хочу указать ссылку на форму создания Child. Child созданная там сущность должна принадлежать Parent.

Я понимаю, как "работать в контексте", чтобы связать Child с Parent. Мой вопрос касается получения ссылки Parent из представления Parent на представление создания Child.

Я нашел некоторые решения, которые кажутся очень «низкими» (например, установка родительского идентификатора в TempData). Я предполагаю, что есть более идиоматический (возможно, даже типобезопасный) способ сделать это.

Я использую бритвенные шаблоны в областях, если это имеет значение.

1 Ответ

1 голос
/ 21 апреля 2019

Создайте структуру данных, скажем, CreateChildViewModel

public class CreateChildViewModel
{
     public int ParentId {get;set;}
     //... rest of the props
}

Теперь вы можете перейти к действию CreateParentChild и передать идентификатор в ссылке с помощью тега helpers <a asp-controller="YourController" asp-action="CreateParentChild" asp-route-parentId="YourParentId"></a>

[HttpGet]
public IActionResult CreateParentChild(int parentId) =>
    View(new CreateChildViewModel { ParentId = parentId });

и затем, по вашему мнению, вы можете сохранить этот идентификатор в скрытом поле ввода

@model YourNamespace.CreateChildViewModel
<input type="hidden" asp-for="ParentId" />

после того, как вы отправите его обратно, чтобы создать дочернего элемента, у вас будет идентификатор в форме.

[HttpPost]
public IActionResult CreateParentChild(CreateChildViewModel vm) {
    //do your stuff
}

Я бы сказал, как правило, стараться никогда не использовать TempData

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...