見るIリンクボタンがあり、ビューから収集情報へのJavaスクリプトがあり、その後、対応するアクション「に投稿GroupDeny」
@Html.ActionLink("Deny Selected", "GroupDeny", null, new { @class = "denySelectedLink" })
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
<script type="text/javascript">
$(document).on('click', '.denySelectedLink', function (e) {
//Cancel original submission
e.preventDefault();
var identifiers = new Array();
//build the identifiers . . .
var jsonArg = JSON.stringify(identifiers);
$.post('/LicenseAssignment/GroupDeny?licensePermissionIdentifiers=' + encodeURIComponent(jsonArg));
});
</script>
次に、コントローラーで、GroupDenyがDBを更新してから、ビューを更新するためにRedirecToActionを呼び出します。
public class LicenseAssignmentController : Controller
{
[HttpPost]
public ActionResult GroupDeny(string licensePermissionIdentifiers)
{
// changes the DB
return RedirectToAction("Index");
}
// GET:
public async Task<ActionResult> Index()
{
var model = get data from DB
return View(model);
}
すべてが期待どおりに機能しているようです。RedirectToAction( "Index")が実行された後にインデックスが呼び出され、デバッグ中にモデルを見るとモデルが更新されます。唯一の問題は、ページがまったく更新されないことです。つまり、ビューは変更されませんが、ページを手動で更新した後(F5キーを押す)、データはDBからの値で更新されます。
ページから移動したくない場合は、AJAXを使用します。あなた$.post()
はAJAXリクエストです。
ナビゲーションが必要なので、ページにフォームを追加します
@using(Html.BeginForm("GroupDeny", "LicenseAssignment", FormMethod.Post))
{
<input type="hidden" value=""
name="licensePermissionIdentifiers"
id="licensePermissionIdentifiers" />
}
このフォームを送信すると、ナビゲートされます
$(document).on('click', '.denySelectedLink', function (e) {
e.preventDefault(); // prevent link navigation
var identifiers = new Array();
//build the identifiers . .
// populate the form values
$("#licensePermissionIdentifiers").val(identifiers);
$("form").submit();
});
RedirectToAction()
ブラウザaに戻り302 Redirect
するにはLicenseAssignment/Index
、あなたはindexアクションを打ちます。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加