2017-01-19 1 views
0

Моего приложением имеет собственный маршрут, который выглядит следующим образом:ASP.NET MVC - Вернуться Просмотр с клиентами Маршрутом

routes.MapRoute(
    name: "ProjectDocument", 
    url: "Project/{projectid}/{controller}/{action}/{id}", 
    defaults: new { controller = "Document", action = "Index", projectid = 0, id = UrlParameter.Optional } 
); 

В принципе, есть несколько проектов, и каждый проект может иметь документы. Документы могут иметь одинаковый идентификатор, поэтому мне нужна комбинация projectid и documentid для получения правильного документа.

Я создал вид редактирования («/ Project/101/Document/Edit/78»). Когда пользователь отправляет форму, я сначала проверяю ModelState в моем контроллере «Документ». Если это не удается, я хочу вернуть модель/modelstate в представление, чтобы показать ошибки. При нормальной маршрутизации, я бы просто использовать

if (!ModelState.IsValid) 
{ 
return View(model); 
} 

, но это не работает с пользовательским маршрутом, поскольку он возвращает «Документ/Edit/78» (без таможенной маршрутизации).

Может ли кто-нибудь указать мне в правильном направлении, как бы я вернул полный пользовательский маршрут этой ошибки?

Благодаря

ОБНОВЛЕНО НА ЗАПРОС

В моем контроллере Документы

GET

public async Task<ActionResult> Edit(int projectid, int id) 
{ 
... 

POST

[HttpPost] 
[ValidateAntiForgeryToken] 
public async Task<ActionResult> Edit(ProjectDocument projectdocument) 
{ 
... 
+0

Что такое подписи к вашим методам GET и POST для метода 'Edit()'? –

+0

[HttpPost] [ValidateAntiForgeryToken] общественного асинхронной Задача Edit (ProjectDocument projectdocument) –

+0

Измените вопрос (не в комментариях), и включают в себя подпись для ГЭТ, а –

ответ

0

Я понял это. У меня был новый маршрут ниже маршрут по умолчанию в моем файле RouteConfig.cs. Спасибо Стивену за то, что он заставил меня взглянуть немного дальше на другие части моего кода.