Как правильно вызвать ActionResult с параметром, который возвращает представление

У меня есть этот код, который возвращает представление:

    public ActionResult Survey(int idProject, string name)
    {
        return View(Surveys.Data.Services.Project.GetAllSurveys(idProject));
    }

Когда я звоню это от клиента с

@Url.Action("Survey", "Project", new { idProject = project.IdProjet, name = project.Nom })

URL появляется с параметрами ? IdProject=2&name=work, который, как мне сказали, не является правильным способом работы в MVC.

Я не думаю, что вызов ajax был бы здесь полезен, так как я возвращаю представление клиенту.

Итак, как мне назвать этот опрос ActionResult?

2 ответа

Решение

Добавьте следующее к вам RouteConfig.cs файл до маршрута по умолчанию

routes.MapRoute(
  name: "ProjectSurvey",
  url: "Project/Survey/{idProject}/{name}",
  defaults: new { controller = "Project", action = "Survey" }
);

Если вы хотите, чтобы URL был похож на Survey/Project/2/work, вам нужно изменить значение маршрута следующим образом:

 routes.MapPageRoute("Default",
    "{controller}/{action}/{idProject}/{name}",
    "new { yourcontroller, youraction, UrlParameter.Optional, UrlParameter.Optional");
Другие вопросы по тегам