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

标签 asp.net-mvc-3 jquery asp.net-ajax

我有一个简单的 mvc 项目,其中包含一个名为 Persons 的表,该表具有一些属性,例如姓名、年龄、姓氏等。

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

在一个 Controller 中,我在数据库中创建了我的人员的索引 View ,并将状态显示为复选框。工作正常。我想要做的是,如果我单击该复选框而不是对所有属性使用编辑 View ,则更改状态。 我只想将索引 View 中的复选框值保存到数据库中。

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

public ActionResult Save(int id, bool status){}

其中id是我在数据库中的人的idstatus是我单击的复选框的值.

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

还有一件事我设法仅以这种方式直接从我的数据库显示复选框值:

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

任何帮助或建议或引导我走向好的方向都是好的!

最佳答案

您有多种选择。一种方法是以(正常)形式放置复选框,然后使用 jQuery Form plugin Ajax 化表单:

@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>

当然,您也可以使用@Ajax.BeginForm,但这具有易于降级的优点。只需删除 jQuery 表单初始化,您就得到了一个常规表单:)

另一种可能性是简单地使用@Ajax.ActionLink。我写了一个blog post on how to deal with Ajax.ActionLink我认为这会对你有所帮助。

针对您的问题的 Controller 操作的签名看起来正确:

public ActionResult Save(int id, bool status){}

另一个选项实际上是创建一个 Settings View 模型(无论你怎么调用它),其中只有一堆 bool 属性来表示复选框:

public class Settings
{
    public bool Status { get; set; }
    // more properties here
}

然后您可以将您的操作绑定(bind)到设置对象:

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

如果您最终需要绑定(bind)多个复选框,这会派上用场。

关于asp.net-mvc-3 - asp.net mvc 将复选框值保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5974727/

相关文章:

javascript - C#函数返回一个值并显示在网页中

javascript - 通过 XMLHttpReques 发布数据不返回 json 值

asp.net-mvc-3 - 请参阅 Controller 中的验证摘要

javascript - 如何在滚动时填充 svg

javascript - 将 data-* 属性添加到 jquery 数据表

javascript - 在 AJAX 调用后重新初始化 jScroll? (AJAX 加载后仍在加载旧的 href)

asp.net-mvc - Ajax.ActionLink 多次重复相同的 GET 请求

ASP.NET MVC 成员角色

c# - RedirectToAction 不满足我的需要。我有哪些选择?

c# - 枚举到下拉列表 MVC3 C#