2013-05-14 2 views
0

Я работаю на веб-приложение ASP.NET MVC4, и у меня есть метод контроллера для обработки с GET запрос с id в URL, как так ...Как обрабатывать POST-запрос URL-адресу, содержащему параметры маршрута?

[PortalAuthorization] 
public ActionResult View(int id) 
{ 
    // get the individual ftp log 
    PortalFTPLog log = PortalFTPLogs.Get(id); 

    if (log == null) 
    { 
     TempData["Error"] = "The provided ftp log id does not exist."; 
     return RedirectToAction("Index"); 
    } 

    // get the available matters to tie uploads to 
    ViewBag.matters = PortalMatters.Get(); 

    return View(log); 
} 

на мой взгляд, для этого контроллер, у меня есть форма, чтобы они могли ее обновить, и я хочу вернуть POST на тот же URL. URL-адрес, такой как foo.com\items\1. То, что функция выше обрабатывает.

Как создать функцию, которая обрабатывает запрос POST для функции, требующей параметра? IN previous POST handlers Я создаю параметр FormsCollection, но когда я добавляю его в список параметров для этой функции, параметр id имеет значение NULL.

[HttpPost] 
[PortalAuthorization] 
public ActionResult View(FormCollection collection, int id) 
{ 
    PortalFTPLog log = PortalFTPLogs.Get(id); 

    if (log == null) 
    { 
     TempData["Error"] = "The provided ftp log id does not exist."; 
     return RedirectToAction("Index"); 
    } 

    // update the matter id and save to database 
    log.Matter = Convert.ToInt32(collection.Get("matter")); 
    log.Save(); 

    TempData["Notice"] = "The FTP log meta data has been updated."; 

    return RedirectToAction("View", new { id = id }); 
} 

Спасибо!

ответ

1

Вы должны предоставить RouteValues ​​в Html.BeginForm на ваш взгляд:

@using (Html.BeginForm(new {id = someIntIdValue})) 
{ 
    // Your form code 
} 
Смежные вопросы