确认数据行后如何刷新部分视图?

时间:2016-01-05 02:26:40

标签: jquery ajax asp.net-mvc asp.net-mvc-4

我在Asp MVC4中使用Ajax加载PartialView。但是,当我单击确认或删除时,如何刷新PartialView中的数据并保持当前页面状态? 这是Jquery:

$("button").click(function () {
            var weekno = [];
            $.each($(".selectpicker option:selected"), function () {
                weekno.push($(this).val());
            });
            $.ajax({
                url: "/Home/PartialTable",
                type: "POST",
                data: JSON.stringify(weekno),
                cache: false,
                contentType: "application/json; charset=utf-8",
                dataType: "html",
                success: function (view) {
                    $('#viewpartial').html(view);
                },
                error: function (req, status, error) {
                    alert("Error! Please select Weekly No !!");
                }
            });
        });

加载PartialView Html:

<div id ="viewpartial" class="tab-content" style="overflow: scroll" </div>

PartialView是一个表

确认行动:

@Html.ActionLink("Confirm", "Confirm", new { Action = "Confirm", fn = file.FILEID}, new { @class = "btn btn-primary", id ="confirm" })

public ActionResult Confirm(Int32 fn) // fn is item ID
    {
        if (ModelState.IsValid)
        {
            var fname = me.MyTaBle.Where(f => f.FILEID.Equals(fn)).FirstOrDefault();
            if (fname.STATUS != null && fname.STATUS == "OPEN")
            {
                try
                {
                    fname.STATUS = "LOCK".ToString();
                    fname.CFMDATE = DateTime.Now;
                    me.SaveChanges();
                }
                catch (Exception ex)
                {
                    ViewBag.Message = "Error" + ex.Message.ToString();
                }
            }
        }
        // **What's return in here??**
    }

我想知道确认行动的回报是什么!谢谢所有

1 个答案:

答案 0 :(得分:0)

如果您不想刷新原始页面,则应通过ajax进行确认。

此外,最好将任何更新数据的代码置于HttpPost操作方法之后,以防止人们尝试通过具有查询字符串值的浏览器执行您的方法。

因此,请使用Confirm属性标记HttpPost方法。您可以返回json结构作为方法的返回值。

[HttpPost]
public ActionResult Confirm(Int fn)
{
  try
  { 
    // update your db record here
    return Json( new { status="success"});
  }
  catch(Exception ex)
  {
    //log the exception
   return Json( new { status="error"});
  }
}

给你的链接id,以便我们以后可以在jQuery中使用它。

@Html.ActionLink("Confirm", "Confirm","Home",
                                   new { fn = file.FILEID, new { id="confirmLink"})

在您的脚本中,您可以在此链接上收听click事件,然后对您的操作方法进行ajax调用。您可以使用jQuery post方法来执行此操作。

$(function(){

   $("#confirmLink").click(function(e){
     e.preventDefault();

     _this=$(this);
     $.post(_this.attr("href"),function(res){
       if(res.status==="success")
       {
         alert("Updated successfully");
         //If you want to update some part of your page, you can do it here.
         //Ex : Getting the updated content from an ajax call and update UI
       }
       else
       {
         alert("Error updating");
       }
     });
   });

});