ASP.Net MVC3中的CheckboxList

时间:2012-05-13 09:47:41

标签: c# asp.net-mvc checkbox

我的应用程序需要使用复选框执行带有HTTP的表格。在控制器端,我将需要遍历表并对已检查的每一行执行某些操作。

我需要做的事情是:

确定是否检查了行

这是我的代码:

查看:

@model IEnumerable<LinqToTwitter.User>
@{
    ViewBag.Title = "Page d'accueil";
}
<h2>Twitter</h2>
<table>
    <tr>
    <td>
        <input id="Checkbox1" type="checkbox" />
    </td>
    </tr>
@foreach (var tweet in Model)
{               
    <tr>
        <td>
            <input id="rowIDs" type="checkbox" />
        </td>
        <td>
            <img alt="" src="@tweet.ProfileImageUrl" />
        </td>
        <td>
            <strong>@tweet.Name</strong>
            <br />
            Friends: <strong>@tweet.FriendsCount</strong>
        </td>
    </tr>
}
</table>

控制器:

{.....
    string nextCursor = "-1";

    List<LinqToTwitter.User> result = new List<LinqToTwitter.User>();
    while (!string.IsNullOrEmpty(nextCursor) && nextCursor != "0")
    {
        var followers =
        (from tweet in twitterCtx.User
            where tweet.Type == UserType.Followers &&
            tweet.ID == auth.UserId &&
            tweet.Cursor == nextCursor
            select tweet).ToList();

        result.AddRange(followers);
        nextCursor = followers[0].CursorMovement.Next;
    }
    return View(result);
}

请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

如果要将输入标记发布到服务器,它们必须位于表单标记中。那么你的html必须是这样的:

@model IEnumerable<LinqToTwitter.User>
@{
         ViewBag.Title = "Page d'accueil";
}
<h2>
    Twitter</h2>
@using (Html.BeginForm())
{
    <table>
        <tr>
            <td>
                <input id="Checkbox1" type="checkbox" />
            </td>
        </tr>
        @foreach (var tweet in Model)
        {               
            <tr>
                 <td>
                    <input id="@("chk" + @tweet.ID.ToString())" type="checkbox" name="@("chk" + @tweet.ID.ToString())"  />
                </td>
                <td>
                    <img alt="" src="@tweet.ProfileImageUrl" />
                </td>
                <td>
                    <strong>@tweet.Name</strong>
                    <br />
                    Friends: <strong>@tweet.FriendsCount</strong>
                </td>
            </tr>
        }
    </table>
}

注意如何通过HtmlHelper定义表单标记并定义具有唯一ID的复选框。

和您的控制器代码如下:

Dictionary<int, bool> isChecked = new Dictionary<int, bool>();

foreach (LinqToTwitter.User item in twitterCtx.User)
{
    if (Request.Form["chk" + item.ID.ToString()] != null && Request.Form["chk" + item.ID.ToString()] == "on")
        isChecked.Add(item.ID, true);
    else
        isChecked.Add(item.ID, false);
}

现在isChecked Dictionary包含每个项目的ID以及是否检查。