2012-12-04 67 views
5

我一直在努力解決如何讓選定複選框的列表使用ActionLink工作。我想我需要用JavaScript做一些客戶端的事情,但是找不到相關的代碼。如何發送從視圖到控制器的選定複選框的列表

以下代碼完美地使用提交按鈕,將選定的ID作爲ID的數組進行回發,但我需要在其他按鈕的頁面上使用該按鈕。

// the view 
@foreach (var station in Stations) 
{ 
    <input type="checkbox" name="selected" value="@station.StationId" /> 
}  
<input type="submit" value="Save" /> 

//Controller stub 
public ActionResult Action(string [] selected) 

我一直堅持這個幾個小時,所以也許我看着這個錯誤的方式。

PS。我經過許多小時的閱讀和學習之後的第一篇文章。

+2

你說,你想能夠點擊一個鏈接,並獲得內容發佈到服務器?我可以假設這些複選框位於一個表單內嗎? Ajax文章? – Jack

+0

是的,只需點擊一個鏈接。我沒有在我的視圖中使用表單(它是一個PartialView),但意識到我可以使用@ Html.FormBegin()來區分提交按鈕。我不太熟悉Ajax或JavaScript,這就是爲什麼(我懷疑)我在這裏掙扎。 – tr3v

回答

2

看起來你是不是在找AJAX崗位。解決這個問題的最簡單方法是將其封裝在表單中並調用提交函數。這裏是你的代碼應該看起來像:

@using(Html.BeginForm("uraction", "urcontroller", FormMethod.Post, new { id = "formId" })) { 
    foreach(var station in Stations) { 
     <input type="checkbox" name="selected" value="@station.StationId" /> 
    } 
} 
<a href="#" id="postBtn">Post</a> 
<script> 
    $(document).ready(function() { 
     $('#postBtn').click(function() { 
      $('#formId').submit(); 
     } 
    } 
</script> 
+0

這個(以及@AliRıza-Adıyahşi的帖子)看起來像我想要的,但我似乎與現有的JavaScript有衝突。我的代碼位於具有客戶端分頁的PartialView中,並且輸入上面的腳本會中斷我的分頁。我將閱讀管理我的腳本的最佳實踐,也許從一個簡單的頁面開始。 – tr3v

+0

Yeap通常使用AJAX發佈,您想要從服務器獲取一些反饋,然後將數據填充回頁面或通知用戶有關已做出的更改。我只是猜測你正在考慮處理數據,然後將用戶重定向到不同的頁面。如果是這樣的話,我的解決方案會更合適。 – Jack

+0

你猜對了。我有一個對象列表(分頁,但在這個階段一次只處理一個頁面 - 不需要記住先前頁面的選擇)。我希望能夠選擇對象,然後調用一個動作來處理選定的對象:刪除,標記等...感謝您的回覆。 – tr3v

3

SomeButtons或鏈接後CheckBoxList的值

<a href="#" id="someButton">Post</a> 
//or buttons, helpers and any elements to trigger ajax post... 

的CheckBoxList:

<div id="MyDiv"> 
    @foreach (var station in Stations) 
    { 
     <input type="checkbox" name="selected" value="@station.StationId" /> 
    } 
</div> 

腳本:

$(document).ready(function() { 
    $('#someButton').click(function() { 
     var list = []; 
     $('#MyDiv input:checked').each(function() { 
      list.push(this.name); 
     }); 
     // now names contains all of the names of checked checkboxes 
     // do something with it for excamle post with ajax 
     $.ajax({ 
      url: '@Url.Action("Action","Contoller")', 
      type: 'POST', 
      data: { Parameters: list}, 
      success: function (result) { 
       alert("success")! 
      }, 
      error: function (result) { 
       alert("error!"); 
      } 
     }); //end ajax 
    }); 
}); 

控制研究ER:

public ActionResult Action(string [] Parameters) 

,如果我這樣做是正確:)

相關問題