2016-12-23 5 views
3
<a href="@Url.Action("UpdateCase", "Receptionist", new { id = @Model[SrNo].Patient_ID })" class="btn btn-danger">Edit</a> 

hrefでは、idをパラメータとして渡しました。私はアクションにリダイレクトするとき私は、URLMVCのURLに "ID"という単語を表示

http://localhost:17888/Receptionist/UpdateCase/12

を以下しているしかし、私は、URLのid単語が表示します。

http://localhost:17888/Receptionist/UpdateCase?id=12

RouteConfig

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

私はパラメータ名ではなく、IDを変更した場合、それが働いています。唯一のIDは、URLには表示されません

UpdateCaseの処置:

[Authorize] 
[HttpGet] 
public ActionResult UpdateCase(Int64 id) 
{ 

} 
+0

は属性を追加しようと確認し、[ルート(「{アクション}/ID = {0}」)]アクション受付には – Marusyk

+0

Editそれはこのようなものでなければなりませんか? –

+0

いいえ、コントローラー内のあなたのアクションの属性として表示されます – Marusyk

答えて

2

可能な解決策の一つが、その場合には

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

にあなたのルートの設定を変更されますが、ルートテーブルに名前idでパラメータを持っていないので、Url.Actionはそれを使用することはできませんし、結果としてあなたは期待されるURLを得るだろう。

しかし、注意して、他のアクション

+0

したがって、デフォルトパラメータをidからparamに変更しました。できます! –

+0

はい、それ以外の場合は中断していないか確認してください。助けてくれてうれしいです – Marusyk

+1

はい私はそれをチェックします。私は私のプロジェクトのちょうど始まりであるので、将来的にはそれが問題になるとは思わない –

0

疑問符が疑問符を強制的にあなたのルートを追加するからそう{id}の除去、パラメータはURLで指定されていない場合に追加されますURLに

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

でUpdateCaseを追加しました。ルートからIDを削除すると、リダイレクトが機能しなくなり、ボタンクリックで何も起こりません。 –

+0

どのようにリンクを生成していますか?質問にコードを追加できますか? –

+0

'@ Html.ActionLink(" Click me "、" About "、" Home "、new {id = 5}、null)'これは私のために働くのですか? –

関連する問題