Asp.net mvc 3 asp.net mvc将复选框值保存到数据库

Asp.net mvc 3 asp.net mvc将复选框值保存到数据库,asp.net-mvc-3,jquery,asp.net-ajax,Asp.net Mvc 3,Jquery,Asp.net Ajax,我有一个简单的mvc项目,由一个名为Persons的表组成,该表有一些属性,如姓名、年龄、姓氏等 我最近在表中添加了一个属性,该属性在SQL中为bit,在C#中为bool,对我来说,它代表一些状态。如果可以,我将该状态设置为true或false 在一个控制器中,我在数据库中创建了我的人员的索引视图,并将状态显示为复选框。这样行。我想做的是改变状态,如果我点击该复选框,而不是使用编辑视图为所有的心房。 我只想将复选框值从索引视图保存到数据库 有些人建议我在控制器中创建一个操作,如下所示: publ

我有一个简单的mvc项目,由一个名为Persons的表组成,该表有一些属性,如姓名、年龄、姓氏等

我最近在表中添加了一个属性,该属性在SQL中为
bit
,在C#中为
bool
,对我来说,它代表一些状态。如果可以,我将该状态设置为true或false

在一个控制器中,我在数据库中创建了我的人员的索引视图,并将状态显示为复选框。这样行。我想做的是改变状态,如果我点击该复选框,而不是使用编辑视图为所有的心房。 我只想将复选框值从索引视图保存到数据库

有些人建议我在控制器中创建一个操作,如下所示:

public ActionResult Save(int id, bool status){}
其中,
id
是我个人在数据库中的
id
,而
status
是我单击的
复选框的值

那么,如何使用jquery、ajax或javascript调用该函数并发送这些参数呢? 我不太擅长ajax,有点害怕它:)

还有一件事,我仅以这种方式从数据库中正确显示复选框值:

@Html.CheckBox("somename", item.Status)
        <input name="somename" type="hidden" value="false"/>
@Html.CheckBox(“somename”,item.Status)

任何帮助、建议或将我送到好的方向都是好的

您有几种选择。一种方法是将复选框置于(正常)表单中,然后使用Ajaxify表单:

@using(Html.BeginForm()) {
    @Html.Checkbox(...)
}

<script type="text/javascript">
    $(document).ready(function () {
        $('form').ajaxForm({
            success: Saved,
            error: HandleError
        });
    });

    function Error(response, status, err) {
        // code to handle error here
    }

    function Saved(responseText, statusText, xhr, $form) {
        // code to handle succes, if any
    }
</script>
另一个选项实际上是创建一个
Settings
视图模型(不管你怎么称呼它),其中只有一堆
bool
属性来表示复选框:

public class Settings
{
    public bool Status { get; set; }
    // more properties here
}
然后可以将操作绑定到设置对象:

public ActionResult Save(int id, Settings settings){}

如果您最终要绑定多个复选框,这将非常方便。

在我看来,使用ajax actionlink是一个不错的选择,这样我就可以在复选框上设置ajax.action链接,然后调用action并发送参数?我正在阅读您的博客文章,试图找出是否可以将其与我的功能一起使用,在actionlink中,我可以发送id和复选框值?@GoranB-在这种情况下,
actionlink
的问题是,您需要为每个复选框设置一个“保存”链接。如果您只有
状态
复选框,这可能不会太糟糕,但如果您有更多复选框,则可能会变得非常混乱。动态传递复选框的值也会变得棘手,我想…我有状态,还有一个复选框也是来自db的,所以如果你能在复选框上写一个actionlink的例子,以及如何发送参数?@GoranB-在这种情况下,我绝对建议使用
表单
方法,无论是使用jQuery表单插件还是使用
@Ajax.BeginForm
。谢谢你,虽然我没有使用你给我的所有建议,但你给了我正确的想法,我使用了它,我在没有表单的情况下完成了我的任务,只使用了html.actionlink,效果很好,我只需要为我的下一个bool var添加它。
public ActionResult Save(int id, Settings settings){}