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。我在这里阅读和学习了很多小时后的第一篇文章。

4

2 回答 2

4

SomeButtons 或发布复选框列表值的链接

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

复选框列表:

<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
    });
});

控制器:

public ActionResult Action(string [] Parameters) 

如果我做对了:)

于 2012-12-04T08:12:29.490 回答
3

看起来你不是在寻找 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>
于 2012-12-04T09:58:15.163 回答