Url.Actionパラメータ?


115

私が持っているコントローラーのリストでは、

 public ActionResult GetByList(string name, string contact)
 {        
     var NameCollection = Service.GetByName(name);    
     var ContactCollection = Service.GetByContact(contact);           
     return View(new ListViewModel(NameCollection ,ContactCollection));
 }

私が呼び出すASPXページでは、

 <a href="<%:Url.Action("GetByList","Listing" , new {name= "John"} , new {contact="calgary, vancouver"})%>"><span>People</span></a>

ASPXコードに問題があります... johnという名前のレコードをプルできます。しかし、私が与えるcontact="calgary, vancouver"と、ウェブページはエラーになります。

で2つのパラメータを呼び出すにはどうすればよいですかUrl.Action。私は以下を試しましたが、それも間違っているようです。

  <a href="<%:Url.Action("GetByList","Listing" , new {name= "John" , contact= " calgary, vancouver" })%>"><span>People</span></a>

回答:


207

以下は正しいオーバーロードです(この例では}routeValues匿名オブジェクトへの終了がないため、コードが例外をスローします)。

<a href="<%: Url.Action("GetByList", "Listing", new { name = "John", contact = "calgary, vancouver" }) %>">
    <span>People</span>
</a>

デフォルトルートを使用しているとすると、次のマークアップが生成されます。

<a href="/Listing/GetByList?name=John&amp;contact=calgary%2C%20vancouver">
    <span>People</span>
</a>

これGetByListにより、2つのパラメーターを渡してコントローラーアクションが正常に呼び出されます。

public ActionResult GetByList(string name, string contact) 
{
    ...
}

@ user787788、どのような問題が発生していますか?2つのパラメーターを受け入れないとはどういう意味ですか?誰が受け入れていませんか?エラーメッセージが表示されますか?あなたのコントローラーアクションはヒットしませんか?間違った値を取得していますか?具体的に。
Darin Dimitrov

2つのパラメーターを指定すると、aspxページがコントローラーにヒットしません。ページ自体でエラーを見つけること。私は何かがすり減ったと呼ばれるデフォルトの例外があります。aspxはそこに移動します
user787788

@ user787788、エラーは何ですか?あなたが得ている正確なメッセージ?
ダリンディミトロフ

エラーは、アドレス(URL)を誤って入力した可能性があります。
user787788

2
@DarinDimitrov、私はこれが非常に古い投稿であることを知っていますが、あなたがオンラインであったのを見ました。パラメータを動的に渡す方法を知っているとは思いません( "John"のようにハードコードされていません)。

8

これはMVC 5で機能します。

<a href="@Url.Action("ActionName", "ControllerName", new { paramName1 = item.paramValue1, paramName2 = item.paramValue2 })" >
    Link text
</a>

4

ドキュメントでParseQueryStringユーティリティを使用してNameValueCollectionであると記載されている場合でも、HttpValueCollectionという名前のプライベートコレクションを返すことができます。次に、キーを手動で追加し、HttpValueCollectionがエンコードを行います。次に、手動でQueryStringを追加します。

var qs = HttpUtility.ParseQueryString(""); 
qs.Add("name", "John")
qs.Add("contact", "calgary");
qs.Add("contact", "vancouver")

<a href="<%: Url.Action("GetByList", "Listing")%>?<%:qs%>">
    <span>People</span>
</a>

0

ここにそれを行う別の簡単な方法があります

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID'>Print</a>

@Model.IDパラメータはどこですか

そして、ここに2番目の例があります。

<a class="nav-link"
   href='@Url.Action("Print1", "DeviceCertificates", new { Area = "Diagnostics"})\@Model.ID?param2=ViewBag.P2&param3=ViewBag.P3'>Print</a>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.