Вопреки другому ответу, я говорю, что это возможно
Asp.net MVC - отличная платформа, которую можно легко расширить.И поэтому в основном я написал специальный селектор метода действия , который позволяет записывать перегрузки, которые могут обслуживать тот же метод HTTP, но с отложенными параметрами.По умолчанию вы получите ошибку во время выполнения, что метод действия не может быть решен.Но когда вы используете этот селектор методов действия, вы избавляетесь от этой ошибки.
В основном, если у ваших классов параметров есть разные имена параметров, вы можете фактически выбирать методы этим способом.
Селектор метода действия вызываетсяRequiresRouteValuesAttribute
и типичный сценарий использования будет с маршрутом по умолчанию, где id
является необязательным в:
{controller}/{action}/{id}
Это означает, что вы должны либо написать
public ActionResult Index(int? id)
{
if (id.HasValue)
{
// display details view
}
else
{
// display master view
}
}
, но используямой селектор методов действия вы можете легко написать два метода действия:
public ActionResult Index()
{
// display master view
}
[RequiresRouteValues("id")]
public ActionResult Index(int id)
{
// display details view
}
То же самое можно применить к вашим методам действия, если ваши пользовательские типы имеют разные имена свойств или методы используют разные имена параметров.Так что в вашем случае это может быть что-то вроде:
[RequiresRouteValues("first.Id")] // when you provide prefix with your form
// or
[RequiresRouteValues("Some.ContractType1.Distict.Property.Name")]
public ActionResult Process(ContractType1 first)
{
// do what's appropriate
}
[RequiresRouteValues("second.Id")] // when you provide prefix with your form
// or
[RequiresRouteValues("Some.ContractType2.Distict.Property.Name")]
public ActionResult Process(ContractType2 second)
{
// do what's appropriate
}
Прочитайте все детали об этом селекторе метода действия и получите код.