使用CSHTML将Checkbox值放入数组中

时间:2015-12-10 14:46:47

标签: razor asp.net-webpages

如何使用Razor网页将复选框中的值检查并将它们放入数组中?

<div>
                    <label for="mon">
                        <input type="checkbox" id="mon" name="day[]" value="monday" @(Request.Form["day"] == "mon" ? "checked" : "")>Monday
                    </label>
                    <label for="tue">
                        <input type="checkbox" id="tue" name="day[]" value="tuesday" @(Request.Form["day"] == "tue" ? "checked" : "")>Tuesday
                    </label>
                    <label for="wed">
                        <input type="checkbox" id="wed" name="day[]" value="wednesday" @(Request.Form["day"] == "wed" ? "checked" : "")>Wednesday
                    </label>
                    <label for="thur">
                        <input type="checkbox" id="thur" name="day[]" value="thursday" @(Request.Form["day"] == "thur" ? "checked" : "")>Thursday
                    </label>
                    <label for="fri">
                        <input type="checkbox" id="fri" name="day[]" value="friday" @(Request.Form["day"] == "fri" ? "checked" : "")>Friday
                    </label>
                </div>

2 个答案:

答案 0 :(得分:0)

最好的方法是在视图中使用模型,然后您可以映射要发布的属性。我会每天使用一个bool。类似的东西:

你的班级:

public class MyModel {

public bool Monday {get;set;}
public bool Tuesday {get;set} 

etc....

}

将其添加到视图顶部

@model MyModel

和你的表格

@using (Html.BeginForm()){
@Html.CheckBoxFor(m=>m.Monday)
@Html.CheckBoxFor(m=>m.Tuesday)
etc..
}

并在您的控制器中

[HttpPost]
public ActionResult YourViewName(MyModel model){

您可以在行动中获取这些值,例如

var mondayChecked = model.Monday;

答案 1 :(得分:0)

使用您已有的代码,这些值将在Request.Form集合中以Request.Form["day[]"]的形式提供。它们将是逗号分隔的字符串。您可以使用string.Split()将其转换为数组:

var myArrayOfDays = Request.Form["day[]"].Split(new [] {','});