簡體   English   中英

使用路由屬性獲取參數時遇到問題

[英]Trouble getting parameters using route attributes

我在MVC 5中實現路由時遇到問題。在調試預期的url(例如http://localhost/Download/Blog/1cf15fe6033a489a998556fedeab20a2/Test/1cd15fe6033a489a998556fedeab20a2 )時,會導致Download控制器上的正確方法被調用,但是didfid始終為null 我究竟做錯了什么? 我還嘗試了刪除下載路由,並在控制器中使用以下屬性定義了路由:

[RoutePrefix("Download")] //on the controller
[Route("{action}/{did:guid}/Test/{fid:guid}")] //on the Blog Action

這是我的RouteConfig.cs中的內容:

routes.MapRoute(
            name: "Download",
            url: "Download",
            defaults: new { controller = "Download", action = "Index" }
        );            

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { 
                controller = "Home",
                action = "Index", 
                id = UrlParameter.Optional 
            }
        );

這是我的控制器:

[Route("{action}/{did}/Test/{fid}")]
public class DownloadController : Controller
{
    public ActionResult Index()
    {
        return Redirect(HandleBadResponse(webResponse));
    }

    [Route("{action}/{did}/Test/{fid}")]//nope
    public ActionResult Blog(HttpRequestMessage request,string did,string fid) 
    { 

        string server = Request.ServerVariables["SERVER_NAME"];

        string pathStr = @"\\mypath\1cf15fe6033a489a998556fedeab20a2.xls";

        byte[] fileBytes = System.IO.File.ReadAllBytes(pathStr);
        string fileName = "test.txt";
        return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, fileName);
    }

通過將以下內容添加到RouteConfig.cs我得到了預期的結果。將該路由放置在RegisterRoutes方法的頂部,我認為您應該從最詳細的路由轉到最不詳細的路由:

routes.MapRoute(
    name: "DownloadBlogAttachment",
    url: "Download/Blog/{did}/fid/{fid}",
    defaults: new { controller = "Download", action = "Blog"}
);

我也刪除了控制器中的Route屬性。

暫無
暫無

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

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