Перегрузка действий в контроллере - PullRequest
0 голосов
/ 12 марта 2012

Возможно ли перегрузить действия в контроллере? Я не нашел никакой информации об этом, и когда я попытался, я получил эту ошибку:

Текущий запрос на действие «Создать» для типа контроллера «InterviewController» неоднозначен между следующими методами действия: System.Web.Mvc.ViewResult Create () для типа> MvcApplication4.MvcApplication4.InterviewController System.Web.Mvc.ViewResult Create (Int32) для типа> MvcApplication4.MvcApplication4.InterviewController

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

Мне нужно 2 способа создать «подходящий».

  1. Я просто вызываю действие и получаю пустую формуляру, в которую мне просто нужно вставить данные.
  2. На странице клиента я должен создать «подходящий» клиент, который уже заполнен, когда форма отображается для пользователя. (нужна производительность, пользователь должен выполнять действия как можно быстрее).

В таблице «возможно» у меня есть столбец «FK_opp_client», который равен столбцу «idClient» из таблицы клиента.

Я не понимаю, как я могу сделать второй путь.

Я создал новое действие в контроллере.

    '
    ' GET: /Opportunite/Create_client

Function Create_client(idclient) As ViewResult
    'Dim FK_Client = (From e In db.client
    'Where(e.idClient = idclient)
    '                    Select e.nomCompteClient).ToString()
    'ViewBag.FK_client = New SelectList(db.client, "idClient", "nomCompteClient", idclient)
    Dim opportunite As opportunite = db.opportunite.Single(Function(o) o.idOpportunite = 5)
    opportunite.FK_Client = idclient
    ViewBag.FK_Client = New SelectList(db.client, "idClient", "nomCompteClient", opportunite.FK_Client)

    Return View(opportunite)
End Function

Я попробовал несколько вещей, чтобы получить то, что хотел, последним было скопировать то, что было сделано в действии «Редактировать», но для пустого ранга. (поэтому я создал пустой ранг в моей БД). Я не думаю, что это была хорошая идея (представьте, что кто-то хочет обновить БД, где idOpportunite = 5 ...)

Есть идеи получше?

1 Ответ

1 голос
/ 12 марта 2012

Если вы хотите сохранить эти два метода под одним и тем же именем, вам нужно реализовать ActionSelectionAttribute для их украшения или использовать их с разными глаголами (например, POST и PUT). Пожалуйста, прочитайте более подробную информацию о процессе выбора метода действия здесь (старый, но все еще актуальный).

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

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