Подтвердить что ты не робот

Имена параметров действия

Используя предоставленный по умолчанию маршрут, я вынужден назвать мои параметры "id". Это хорошо для многих моих действий с контроллером, но я хочу использовать несколько лучших имен переменных в определенных местах. Есть ли какой-то атрибут, который я могу использовать, чтобы иметь более значимые имена переменных в моих сигнатурах действия?

// Default Route:
routes.MapRoute(
  "Default",                                              // Route name
  "{controller}/{action}/{id}",                           // URL with parameters
  new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);

// Action Signature:
public ActionResult ByAlias(string alias)
{
  // Because the route specifies "id" and this action takes an "alias", nothing is bound
}
4b9b3361

Ответ 1

Используйте атрибут [Bind]:

public ActionResult ByAlias([Bind(Prefix = "id")] string alias) {
    // your code here
}

Ответ 2

Это все еще работает, ваша строка запроса будет выглядеть как "/Controller/ByAlias? alias = something".

Ответ 3

Вы можете настроить маршруты с любыми идентификаторами, которые вам нравятся.

routes.MapRoute(
  "Default",                                              // Route name
  "{controller}/{action}/{alias}",                           // URL with parameters
  new { controller = "Home", action = "Index", alias = "" }  // Parameter defaults
);

Изменить: Вот обзор с сайта ASP.NET

Ответ 4

Просто потому, что ваш маршрут использует имя "id" для переменной ID, не означает, что вы должны использовать одно и то же имя в методах действий вашего контроллера.

Например, данный метод контроллера...

public Controller MailerController
{
    public ActionResult Details(int mailerID)
    {
        ...
        return View(new { id = mailerID });
    }
}

... и этот метод действия вызывается из представления...

<%= Html.ActionLink("More Info", "Details", new { mailerID = 7 }) %>

... вы можете использовать любое соглашение об именах, которое вы хотите для параметра ID, в методах действий контроллера. Все, что вам нужно сделать, это разрешить новое имя по умолчанию, будь то "id", "alias" или что-то еще.

В приведенном выше примере должно быть разрешено:

<a href="/Mailer/Details/7">More Info</a>