2012-03-07 64 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}) 

現在,這一切都工作得很好。但我必須發送一個List對象,我通過提交一個表單來完成這一切工作。

所以我的問題是:有沒有使用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

嗨菲利普感謝您的答覆。我需要獲取ActionResult返回值,以便我可以將它作爲參數傳遞給一個jquery函數,該函數將顯示在對話框中返回的頁面,而不是更改當前網頁。因此,我以前使用: onclick =「'myjquery.showInDialog(Url.Action(」CheckItem「,new {isCorrect = true,id = 2}))'' 然後在彈出窗口中顯示網頁。但現在我必須提交一份表格,所以我想知道我將如何做到這一點,並得到迴應。 – TBD 2012-03-09 10:48:56