2012-03-07 14 views
0

プロジェクト内の既存のコードは、Url.Actionを使用してダイアログに表示する完全修飾URLを取得しています。Asp.net MVCはアクションメソッドへの完全修飾URLを取得

public ActionResult CheckItem(bool isCorrect, string id){} 

、その後Url.Actionは単純です:

Url.Action("CheckItem", new { isCorrect = true, id = 2}) 

今、このすべてはうまく動作しますので、それは次のようになり、コントローラの機能を持っています。しかし、私はオブジェクトのリスト<>を送る必要があります、私はフォームを提出することによってこれがすべて働いています。

私の質問です.Url.Actionを使用してフォームを送信する方法はありますか?私のフォームを提出し、URLを取得する最良の方法は何ですか?

ありがとうございました。

答えて

1

私はあなたが必要としているものを正確に理解していませんでしたが、おそらくユーザがチェックボックスなどを使って項目を選択していると思います。

答えは、このリンクを次のようになります。CheckboxList in MVC3.0

基本的にあなたがされなければならない何をすべきか:リストまたはIEnumerableをアイテムを受け取るアクションを作成し、その行動に投稿するフォームを置きます。

私は助けることができる、あまりにもサンプルコードを作った:あなたのコントローラは可能性があり

using System; 

namespace SandboxMvcApplication.Models 
{ 
    public class Item 
    { 
     public int Id { get; set; } 
     public string Title { get; set; } 
    } 
} 

public class HomeController : Controller 
{ 
    List<Item> itemList = new List<Item>() { 
      new Item() { Id = 1, Title = "Item 1" }, 
      new Item() { Id = 2, Title = "Item 2" }, 
      new Item() { Id = 3, Title = "Item 3" } 
     }; 

    public ActionResult Index() 
    { 
     return View(itemList); 
    } 

    public ActionResult ProcessForm(int[] items) 
    { 
     var selectedItems = new List<Item>(); 
     foreach (var item in items) 
     { 
      selectedItems.AddRange(itemList.Where(i => i.Id == item)); 
     } 

     return View("Success", selectedItems); 
    } 
} 

アンインデックス表示(〜/

をあなたがアイテムのモデルを持つことができますViews/Home/Index.cshtml):

@model List<SandboxMvcApplication.Models.Item> 

@{ 
    ViewBag.Title = "Home Page"; 
} 

<form action="@Url.Action("ProcessForm")" method="post"> 
    <ul> 
     @foreach (var item in Model) 
     { 
      <li><input type="checkbox" name="items" value="@item.Id" />@item.Title</li> 
     } 
    </ul> 

    <input type="submit" value="Send selected items"/> 
</form> 

最後に、ユーザーが選択したアイテムを表示する成功ビュー:

@model List<SandboxMvcApplication.Models.Item> 

@{ 
    ViewBag.Title = "Success"; 
} 

<h2>Success: Selected items were</h2> 

<ul> 
@foreach (var item in Model) 
{ 
    <li>@item.Id => @item.Title</li>    
} 
</ul> 
+0

こんにちはフェリペは応答に感謝します。現在のWebページを変更するのではなくダイアログに返されたページを表示するjquery関数の引数として渡すことができるように、ActionResultの戻り値を取得する必要があります。以前は私が使用していました: onclick = "'myjquery.showInDialog(Url.Action(" CheckItem "、new {isCorrect = true、id = 2}))" " これは、Webページをポップアップで表示しました。しかし、今私は同じフォームを提出しなければならないので、私はどのようにこれを行うことができ、返信を返すことができるだろうと思っていた。 – TBD

関連する問題