powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Правильно ли так поступать ?
3 сообщений из 3, страница 1 из 1
Правильно ли так поступать ?
    #39259592
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильно ли так делать ?


Имеются 2 контроллера, отвечающих за свои сущности. Находятся в разных сборках и ссылок не имеют.
В Бд между этими сущностями есть связь 1к1 (одна организация, просто в разных справочниках).
В моделях данных (использующихся на вьюхах) есть поля типа int? со ссылкой друг на друга.

Задача стоит такая: находясь на одной из вьюх, на странице редактирования Сущности1, по нажатию на кнопку создать в базе Сущность2, предзаполнить часть полей, типа ИНН (это ведь одна организация, просто в разных справочниках) и позволить юзеру дозаполнить их и сохранить.

Мое решение. Корректно ли оно ?
Я сделал следующим образом.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Controller1
 [HttpGet]
public ActionResult CreateObject2FromObject1(int object1Id)
{           
    Object1 object1 =   .... where object1Id = ...;

            Object1Model model = new Object1Model()
            {                
                INN = object1.INN,
				Object1Id = object1Id                
            };
            
            return RedirectToAction("CreateFromObject1", "Object2", model);
}


Controller2
 [HttpGet]
public ActionResult CreateFromObject1(Object1Model model)
{
            var Object2Model = new Object2Model
            {
                INN = model.INN,  
                Object1Id = model.Object1Id                
            };
			
            return this.View(_createView, Object2Model);
}



Отмечу, что описание Object1Model есть в обоих сборках. Т.к. между сборками нету ссылок, пришлось просто создать копии этих моделей. Полагаю это верное решение. Это же просто вью-модель. Т.е. некое представление некоторого объекта используемое в каком-то конкретном месте. не вижу проблему в данном дублировании кода. А учитывая что они скрыты за мудреными неймспейсами, остальные части программы вообще не заметят эти модели - они никому не помешают.

Мой вопрос относится в целом к решению. Правильно ли, что параметры из одного контроллера передаются через RedirectToAction в другой контроллер. В частности корректно ли то, что эти параметры идут через браузер ? Фактически он может что-то там подменить.

Если бы между сборками была связь, я мог бы просто программно вызвать код создания одного объекта из другого. Но связи нету - фактически она идет в обоих направлениях, а значит мы получаем циклическую ссылку в референсах. переписывать код тоже не вариант - текущее разделение сборок устраивает.


Какова альтернатива моему решению, если оно не верное ?
...
Рейтинг: 0 / 0
Правильно ли так поступать ?
    #39259885
Иммануил Кант
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. сущности вынести в отдельную сборку
2. создание и прочие манипуляции с сущностями вынести в отдельную сборку сервисов
...
Рейтинг: 0 / 0
Правильно ли так поступать ?
    #39259906
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Иммануил Кант,

Переделывать структуру очень не хочется. Сам проект рабочий. Я лишь добавляю кое какой функционал. Пересобирать его структуру с нуля (и тестировать) не хочется. Много времени и чревато ошибками.

Мой вопрос был в том,что я задумался насколько вообще такой подход с RedirectToAction (с пробросом параметров через браузер) корректен ?
И хотел узнать, есть ли альтернативы данному подходу. Просто других способов не знаю, вот и спросил.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Правильно ли так поступать ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]