誰かが行のビットフィールドを表すボックスをチェックしたときにデータベースを更新したいと思います。私はこの質問のオフに行くされています:MacroStatusControllerクラスでasp.net mvc checkboxトリガアクションを作成するにはどうすればよいですか?
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Macro_Name)
</td>
<td>
@Html.CheckBoxFor(modelItem => item.Claimed, new { id = item.Macro_Name, data_url = Url.Action("ToggleClaim", "MacroStatus")})
</td>
<td>
@Html.DisplayFor(modelItem => item.Date_Claimed)
</td>
<td>
@Html.DisplayFor(modelItem => item.Username)
</td>
<td>
@Html.DisplayFor(modelItem => item.Finished)
</td>
<td>
@Html.DisplayFor(modelItem => item.Date_Completed)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.Macro_Name }) |
@Html.ActionLink("Details", "Details", new { id = item.Macro_Name }) |
@Html.ActionLink("Delete", "Delete", new { id = item.Macro_Name })
</td>
</tr>
}
私は、次のアクションを持っている:ここでAjax.ActionLink(...) with checkbox はCSHTMLファイルに私のコードです
public ActionResult ToggleClaim(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
MacroStatus macroStatus = db.MacroStatus1.Find(id);
if (macroStatus == null)
{
return HttpNotFound();
}
if (ModelState.IsValid)
{
macroStatus.Date_Claimed = DateTime.Now;
db.Entry(macroStatus).State = EntityState.Modified;
db.SaveChanges();
}
return new HttpStatusCodeResult(HttpStatusCode.OK);
}
しかし、ToggleClaimではありませんチェックボックスをオンまたはオフにすると実行されます。コンパイルエラーはありません。これは私の最初の試みasp.net mvcで、何が間違っているのですか?
'data-url'属性には現在いくつかのURLしか含まれていません。それを使用するJavascriptの一部が必要です。 – haim770
これには数多くのアプローチがありますが、そのチェックボックスをオンにすると、サーバーエンドポイント(ASP.net MVCを使用しているためおそらくWeb APIメソッド)へのAJAX呼び出しを行う必要があります。 "迅速かつ汚れた"答えは、チェックボックスのためにjQueryセレクタを使用し、$([セレクタ])を使って関数を登録することです。change(function(){});また、チェックボックスを剣道のビューモデルやその他の方法でバインドすることもできます。 –
こちらもご覧になれます:http://stackoverflow.com/questions/1784412/asp-net-mvc-simulating-autopostback-for-simple-checkbox –