2016-08-10 24 views
0

コントローラがあり、私はActionResultメソッドにパラメータを渡す方法を理解できるようです。ViewBagによるコントローラからビューへの値の受け渡し

routes.MapRoute(
      name: "MyRoute", 
      url: "{controller}/{name}/{id}", 
      defaults: new { controller = "Project", name = "Search", id = UrlParameter.Optional } 
     ); 

これは私のルートです。今私のコントローラでは、私は方法

[HttpGet] 
public ActionResult Search() 
{ 
    return View(); 
} 

[HttpPost] 
public ActionResult Search(int Id) 
{ 
    ViewBag.iD = Id; 
    return View(); 
} 

を作成しましたそして、私の見解では

<body> 
    <div> 
     ASDF + @ViewBag.iD 
    </div> 
</body> 

にはどうすれば検索行動から私のidパラメータに値を渡すことができますか?それは私が検索()メソッドに入る
http://localhost:52992/Project/Search/id=2 またはhttp://localhost:52992/Project/Search/1

どちらのメソッドを呼び出して何でもそうです、どれも(int型のID)を検索することになりません。

何が欠けていますか?

+0

Aをそれを言及する必要がある[HTTPGET]に

Public ActionResult Search(int id) { Viewbag.Id = id; return view(); } 

アクションはデフォルトでありますリンクはPOSTではなくGETを生成するので、GETメソッドは'public ActionResult Search(int ID)'(POSTメソッドを削除してください) –

+0

私は今や完全なばかげを感じます。ありがとうございました!あなたは私がそれを受け入れることができるように答えとして投稿することができます。 – CiucaS

答えて

1

ビュー内のリンク(FormMethod.Get付きまたはフォームまたはアドレスバーにURLを入力)がGET呼び出しではなく、POSTを作るので、あなたの方法は

[HttpGet] 
public ActionResult Search(int ID) 
{ 
    // do something based on the value of ID 
    ViewBag.iD = ID; 
    return View(); 
} 

[HttpPost]方法を削除する必要があります。

0

「SearchAction」メソッドHttpGetから値を渡す必要があります。あなたはそれから渡すと、その値のみが唯一の「ポスト」メソッドを呼び出すことになるの提出について、getメソッドが呼び出されますintial負荷の観点

[HttpGet] 
public ActionResult Search() 
{ 
    ViewBag.iD = your Id value here; 
    return View(); 
} 

に表示されます。
これが役立つことを願っています。

0
ビューで

<a href='@Url.Action("ActionName", "ControllerName", new { id= 10})'>...</a> 

OR

@{ 
int id = 10 
} 
    <a href="/ControllerName/ActionName/@id"> ... </a> 

あなたのアクションあなたは文句を言わない

関連する問題