我有一个简单的 mvc 项目,其中包含一个名为 Persons 的表,该表具有一些属性,例如姓名、年龄、姓氏等。
我最近向表添加了一个属性,该属性在 SQL 中为 bit
类型,在 C# 中为 bool
类型,对我来说它代表了某种状态。如果可以,我将该状态设置为 true 或 false。
在一个 Controller 中,我在数据库中创建了我的人员的索引 View ,并将状态显示为复选框。工作正常。我想要做的是,如果我单击该复选框而不是对所有属性使用编辑 View ,则更改状态。 我只想将索引 View 中的复选框值保存到数据库中。
有些人建议我在 Controller 中创建一个操作,如下所示:
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"/>
任何帮助或建议或引导我走向好的方向都是好的!
最佳答案
您有多种选择。一种方法是以(正常)形式放置复选框,然后使用 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/