2017-11-26 7 views
0

ASP.NETコアMVC 2コントローラのメソッドのパラメータが空の理由は?

クライアント側コード:

static void Get(Uri uri, DownloadStringCompletedEventHandler callback) 
{ 
    var client = new WebClient(); 
    client.DownloadStringCompleted += callback; 
    // Here uri is http://localhost:61698/Home/Task/aa348338-d367-4635-a5e5-9208c9d0e6a5 
    client.DownloadStringAsync(uri); 
} 

サーバー側(コントローラのメソッド):

[HttpGet] 
public string Task(Guid guid) 
{ 
    // Here guid is {00000000-0000-0000-0000-000000000000} 
    // instead of aa348338-d367-4635-a5e5-9208c9d0e6a5 
} 

はなぜここGUIDは、私はそれを修正することができますどのように&空のでしょうか?

答えて

2

あなたは経路定義を共有していません。デフォルトのルート定義を使用している場合は、URLにパラメータ名を明示的に指定する必要があります(名前がidでないため)。

これは動作するはずです。

yourSiteBaseUrl/Home/task?guid=aa348338-d367-4635-a5e5-9208c9d0e6a5 

それとも

あなたはidにパラメータ名を変更することができますし、今はデフォルトルートの登録と定義される形式/controllername/actionname/{id}に要求URLを使用することができます。今

[HttpGet] 
public string Task(Guid id) 
{ 
    return id.ToString(); 
} 

あなたはまだあなたが使用することができ、​​としてパラメータ名を使用したいのですが、actionName/guidValueとしてURLパターンを使用したい場合は、URL yourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5

それとも

に動作しますこのアクションメソッドのカスタムルートテンプレートを定義するための属性ルーティング。

Route属性を使用してルートテンプレートを定義します。

[HttpGet] 
[Route("Home/task/{guid:Guid}")] 
public string Task(Guid guid) 
{ 
    return guid.ToString(); 
} 

さて、URL yourSiteBaseUrl/Home/task/aa348338-d367-4635-a5e5-9208c9d0e6a5

に動作します
関連する問題