簡體   English   中英

ASP.NET MVC屬性路由 - 參數始終為null

[英]ASP.NET MVC Attribute Routing - parameter is always null

最近我遇到了以下問題。 讓我們假設我們在內部有以下控制器和GET方法:

[RoutePrefix("admin-panel")]
public class AdminPanelController : Controller
{
   [Route("places/edit/{placeId}")]
   public ActionResult EditPlace(int? placeId)
   {
     return View("EditPlace", new EditPlaceViewModel(...));
   }
}

現在我們可以通過url訪問此方法:

(...)/管理面板/地/編輯/ 123

問題是placeId參數始終為null

如果我將EditPlace方法路由規則更改為以下:

[RoutePrefix("admin-panel")]
public class AdminPanelController : Controller
{
   [Route("places/{placeId}/edit")]
   public ActionResult EditPlace(int? placeId)
   {
     return View("EditPlace", new EditPlaceViewModel(...));
   }
}

一切都開始正常工作 - placeId參數正在成功通過。

我在這里錯過了什么? 為什么我不能使用第一個解決方案?

提前致謝!

@Update

好的,我錯過了我的POST方法具有相同的路由規則,如下所示:

[HttpPost]
[Route("places/edit/{placeId}")]
[MultipleSubmitButton(Name = "action", Argument = "NextEditStep")]
public ActionResult NextEditStep(int? placeId, EditPlaceViewModel model)
{
    // do some operations with posted model
    return View("EditPlace", new EditPlaceViewModel(...));
}

[HttpPost]
[Route("places/edit/{placeId}")]
[MultipleSubmitButton(Name = "action", Argument = "PreviousEditStep")]
public ActionResult PreviousEditStep(int? placeId, EditPlaceViewModel model)
{
    // do some operations with posted model
    return View("EditPlace", new EditPlaceViewModel(...));
}

如果我把它們評論出來,問題就會消失,但說實話 - 我需要它才能形成生成。 有沒有機會讓這3種方法具有相同的路由規則?

我有類似的控制器與類似的3種方法(1 GET和2 POSTS),但他們沒有任何路由參數。 無論如何,這種路由工作得很好,並且行為與預期一致 唯一的區別是第一個有路由參數而第二個沒有。

[Route("places/edit/{placeId: int}")]

嘗試這個

可以在路由中使用可選參數,如下所示:

[Route("places/edit/{placeId?}")]

(編輯) https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/#optionals-and-defaults

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM