2012-12-04 52 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) 

,如果我这样做是正确:)

相关问题