2012-03-12 2 views
0

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

The current request for action 'Create' on controller type 'InterviewController' is >ambiguous between the following action methods: System.Web.Mvc.ViewResult Create() on type >MvcApplication4.MvcApplication4.InterviewController System.Web.Mvc.ViewResult Create(Int32) on type >MvcApplication4.MvcApplication4.InterviewController

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

Мне нужно два способа создания «опционального».

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

В таблице «optionite» у меня есть столбец «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 

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

Любые лучшие идеи?

ответ

1

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

Разный подход может привести к вашему параметру optional и выполнить действие, чтобы проверить, было ли оно передано или нет (с помощью типа NULL).

+0

thx на время, проведенное для меня. Я буду использовать методы, которые станут действиями. Для другой проблемы. Любая лучшая идея о том, как я могу улучшить способ, которым я нашел, чтобы обработать предварительно заполненный формуляр? –