单击提交按钮时刷新部分视图内容

本文关键字:视图 刷新部 提交 按钮 单击 | 更新日期: 2023-09-27 18:28:01

我有一个强类型视图,它有一个表单,当单击提交按钮时,我在其中放置了一个字段showtime。我想将条目保存到数据库中。我还将该条目与数据库上的其他条目一起显示在我放在主视图上的部分视图中。当调用Index操作方法时,会呈现Main视图。我想在保存新条目时更新Partial视图,而不重新加载整个页面,只需刷新部分页面即可。

这是我的观点:

@model Bookmany.Admin.Models.Theater.TheaterShowTimeViewModel
@{
    ViewBag.Title = "Theater showTimes / BookMany";
 }
<h3>Theater ShowTimes</h3>
 @using (Html.BeginForm())
 {
@Html.AntiForgeryToken()
<div class="form-horizontal">
    <hr />
    @Html.ValidationSummary(true)
    <div class="form-group">
        @Html.LabelFor(model => model.TheaterID, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownListFor(model => model.TheaterID, Model.AvailableTheaters)
            @Html.ValidationMessageFor(model => model.TheaterID)
        </div>
    </div>
    <div class="form-group">
        @Html.LabelFor(model => model.ShowTimeName, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.ShowTimeName)
            @Html.ValidationMessageFor(model => model.ShowTimeName)
        </div>
    </div>
    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Save" class="btn btn-default" />
        </div>
    </div>
</div>
}
<div>
  @Html.Partial("_TheaterShowTimeList", Model.TheaterShowTimeList)
</div>

以下是我的部分观点:

@model IEnumerable<Bookmany.Core.Domain.TheaterShowTime>
<table class="table">
<tr>
    <th>
        Theater Name
    </th>
    <th>
        @Html.DisplayNameFor(model => model.ShowTimeName)
    </th>
    <th></th>
</tr>
@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Theater.TheaterName)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.TheaterShowTimeID }) |
            @Html.ActionLink("Details", "Details", new { id = item.TheaterShowTimeID }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.TheaterShowTimeID })
        </td>
    </tr>
}

我的行动方式:

    public ActionResult Index()
    {
        var model = new TheaterShowTimeViewModel();
        //Bind Theater dropdown with selected value
        model.AvailableTheaters = GetTheaters();
        model.TheaterShowTimeList = _theaterShowTimeService.GetAllTheaterShowTime();
        return View(model);
    }
    [HttpPost]
    public ActionResult Index(TheaterShowTimeViewModel model)
    {
        if (ModelState.IsValid)
        {
            InsertOrUpdateTheaterShowTime(model);
            model.TheaterShowTimeList=_theaterShowTimeService.GetAllTheaterShowTime();
            return PartialView("_TheaterShowTimeList", model.TheaterShowTimeList);
        }
        return View(model);
    }

我的问题:

当我在字段中输入一个值并提交表单时,现在保存的条目部分视图只返回更新的列表

我想在不重新加载整个页面的情况下更新部分视图,如何实现?

单击提交按钮时刷新部分视图内容

正如Stephen Muecke所说,当提交按钮点击时,我使用ajax发布了表单

<script type="text/javascript" >
$(function () {
$('form').submit(function () {
    if ($(this).valid()) {
        $.ajax({
            url: this.action,
            type: this.method,
            data: $(this).serialize(),
            success: function (result) {
                $('#ShowTimeName').val("");
                $('#theaterShowList').html(result);
            }
        });
    }
    return false;
  });
 });
</script>

在我返回部分视图的操作方法中:

    [HttpPost]
    public ActionResult Index(TheaterShowTimeViewModel model)
    {
        if (ModelState.IsValid)
        {
            InsertOrUpdateTheaterShowTime(model);
            model.TheaterShowTimeList=_theaterShowTimeService.GetAllTheaterShowTime();
            //return RedirectToAction("Index", new { id = model.TheaterID });
            //return Json(model.TheaterShowTimeList);
            return PartialView("_TheaterShowTimeList", model.TheaterShowTimeList);
        }
        return View(model);
    }

这解决了我的问题