如何在不加载MVC的情况下更新部分数据

MVC

我想上传部分视图数据而无需重新加载html。我曾经Json获取数据,但是我认为Script中存在一些问题。Success部分未执行。

  [HttpPost]
        public JsonResult HorseTracker(ClsHorseTracker model)
        {
            try
            {
                if (ModelState.IsValid)
                {

                  horseTrackerDetails.InsertUpdateHorseTracker(model);
                    }
                                        }
                return Json(model, JsonRequestBehavior.AllowGet);
            }
            catch
            {
                return Json(new { success = false });
            }
        }

 [ChildActionOnly]
        public PartialViewResult HorseTrackerDetails()
        {
            return PartialView("_pHorseTrackerDetails", horseTrackerDetails.HorseTrackerList());
        }

主视图

 @using (Html.BeginForm("HorseTracker", "HorseTracker", FormMethod.Post, new { id = "CreateForm" }))
        {
            <div class="panel panel-default" style="font-size:12px;">

                <div class="panel-body">
                    <div class="form-group">    

                        @Html.TextBoxFor(m => m.HorseName)

                        @Html.DropDownListFor(m => m.HorseTypeName, Model.HorseTypeList)

                    </div>
                    <input type="submit" value="Save" class="btn btn-primary pull-right" />
                </div>
            </div>

        }

    </div>
    <div id="partial" class="col-md-8">
        @Html.Action("HorseTrackerDetails", "HorseTracker")
    </div>

部分视图

  <table class="table">
                <tr>

                    <th>
                        @Html.DisplayNameFor(model => model.HorseName)
                    </th>

                    <th>
                        @Html.DisplayName("Type")
                    </th>


                </tr>

                @foreach (var item in Model)
                {
                    <tr>

                        <td>
                            @item.HorseName
                        </td>

                        <td>
                            @item.HorseTypeName
                        </td>
</tr>
</table>

脚本

  $(document).ready(function () {
            var url = '@Url.Action("HorseTracker", "HorseTracker")';
            $('#CreateForm').submit(function () {

                  if (!$(this).valid()) {
                    return;
                   }
                 $.post(url,$(this).serialize(), function (response) {
                     if (response.success) {
                         debugger;
                         $('#partial').html(response);
                     }
                     else {
                         var message = response.message;
                         alert(message);
                      }
                });
                   return false;
               })
        })
用户名

除非使用POST方法更改模型属性的值,否则没有理由返回模型(或局部视图)。您可以简单地根据表单中的值将新行追加到表中。

您的控制器方法应为

[HttpPost]
public JsonResult HorseTracker(ClsHorseTracker model)
{
    try
    {
        if (ModelState.IsValid)
        {
              horseTrackerDetails.InsertUpdateHorseTracker(model);
              return Json(new { success = true});
        }
        // see notes below
    }
    catch
    {
        return Json(new { message = "your error message" });
    }
}

然后将脚本修改为

var url = '@Url.Action("HorseTracker", "HorseTracker")';
$('#CreateForm').submit(function () {
    if (!$(this).valid()) {
        return;
    }
    var name = $('#HorseName').val();
    var type = $('#HorseTypeName').find('option:selected').text()

    $.post(url, $(this).serialize(), function (response) {
        if (response.success) {
            var row = $('<tr></tr>');
            row.append($('<td></td>').text(name));
            row.append($('<td></td>').text(type));
            $('.table').append(row);
        } else if (response.message) {
            alert(response.message);
        }
    });
    return false;
})

笔记

如果ModelState无效,则应返回ModelState错误列表,以便可以更新由@Html.ValidationMessageFor(...);To生成的相应元素。

var errors = ModelState.Keys.Where(k => ModelState[k].Errors.Count > 0).Select(k => new { propertyName = k, errorMessage = ModelState[k].Errors[0].ErrorMessage });
return Json( new { errors = errors });

然后else if (response.errors) { // update the error messages }success回调中添加代码块

如果将更好地呈现<table><thead><tbody>元素,并给予<tbody>一个id属性,并以此作为选择添加新行

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

django如何在不加载的情况下更新模板

在“活动”之间导航时,如何在不加载数据的情况下保留数据

如何在不加载的情况下使用foreach库

默认情况下如何在不加载片段的情况下使用导航图?

如何在不加载表的所有数据的情况下计算活动和不活动统计信息?

如何在不加载依赖库的情况下加载共享库?

如何在不加载关联模型的情况下检查 has_one 是否存在

如何在不加载所有元素的情况下搜索特定元素的 XML 文件?

如何在不加载整个网页的情况下执行特定的 js 请求?

如何在不加载软件包的情况下使用ggplot2函数?

如何在不加载区域的情况下将LocalDateTime转换为UTC并返回?

如何在不加载整个文件的情况下读取前n行?

如何在不加载整个文件的情况下从XLS文件获取工作表名称?

如何在不加载图像的情况下获取图像尺寸

如何在不加载Java类的情况下检查它?

如何在不加载父级Set集合的情况下持久化Hibernate子实体

如何在不加载完整内容的情况下获取请求的响应类型

如何在不加载整个文件的情况下将标题行添加到 CSV?

如何在不加载UIImage的情况下获得图像方向?

如何在不加载iOS屏幕的情况下拍摄ViewController的快照?

如何在不加载页面的情况下进行存储和目录列表

如何在不加载整个 json 文件的情况下提取键值

如何在不重新加载数据的情况下更新tableview单元?

如何在不先加载实体的情况下更新实体

如何在不覆盖的情况下加载数据?

如何在不加载所有项目的情况下打开Visual Studio解决方案?

(C#)如何在不加载或重写整个文件的情况下修改现有XML文件中的属性值?

如何在不使用train_test_split()的情况下拆分数据集?

如何在不丢失数据的情况下更新已部署的ASP MVC网站上的数据库模型