2013-06-18 4 views
1

У меня есть этот метод, который вызывает еще 2 метода, но у меня ошибка при выполнении этого кода.Методы контроллера с таким же именем

public ActionResult CreateOrder(string action, string type) 
    { 
     /*Some Code*/ 
     if(MyObject.isOk){ 
      return RedirectToAction("EditOrder", new { code = ErrorCode, libelle = Description }); 

     }else{ 
      return RedirectToAction("EditOrder", new { nordre = NoOrdre }); 
     } 
    } 

public ActionResult EditOrder(string nordre) 
    { 

    } 

[ActionName("EditOrder")] 
public ActionResult EditOrderError(string code, string libelle) 
{ 

    } 

Но я получаю 404, потому что скрипт пытается найти представление «EditOrderError».

+1

Как вы называете этот метод из View? – bayramucuncu

ответ

2

ASP.NET MVC не позволяет вам overload controller actions, если они handle different HTTP verbs.

Предполагая, что вы используете C# 4, один возможный обходной путь, хотя и не хорошенькая, чтобы использовать дополнительные параметры на одном действии контроллера:

public ActionResult EditOrder(string nordre = null, string code = null, string libelle = null) 
{ 
    if (nordre != null) 
    { 
     // ... 
    } 
    else if (code != null && libelle != null) 
    { 
     // ... 
    } 
    else 
    { 
     return new EmptyResult(); 
    } 
} 
0

Вы не можете перегружать действия контроллера, используя тот же метод HTTP/Verb (GET/POST/etc)

Я бы использовал только ActionNameAttribute, если мне нужно действие контроллера, чтобы иметь символы, которые .NET не разрешает в идентификаторе. Подобно использованию тире (/ controller/create-user). Like this one..

Смежные вопросы