Ajax.BeginForm在mvc

时间:2017-06-21 12:59:20

标签: c# jquery ajax asp.net-mvc razor

我正在尝试使用ajax而不是post方法的整个视图加载div数据。 但它会在帖子操作上返回object%20HTMLInputElement操作名称。

控制器:

 [HttpGet]
 public ActionResult Index()
 {
   return View();
 }

 [HttpPost]
 public ActionResult Index(DemoCLass objdemo)
 {
   return View();
 }

查看

<div id="divEmp">
@using (Ajax.BeginForm("Index", "Challan", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" }))
{
    @Html.AntiForgeryToken()
    <h3 style="text-align:center;" class="row header">Challan Data</h3>

    @Html.Partial("_DateCommonFT")
            }

它包括_Layout.cshtml,其中我将脚本定义为:

<script src="~/Scripts/jquery-1.12.4.min.js"></script>
<script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

如何使用ajax在帖子请求中不加载整个页面(_layout.cshtml)时仅渲染后期操作。

3 个答案:

答案 0 :(得分:1)

您是否可以尝试关闭div标签并在控制器中接收HtmlForgeryToken,如下所示。

您还可以通过PartialView()方法

返回Index来使用PartialView填充目标div
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(DemoCLass objdemo)
{
   return PartialView();
}


<div id="divEmp">
</div>
@using (Ajax.BeginForm("Index", "Challan", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp" }))
{
    @Html.AntiForgeryToken()
    <h3 style="text-align:center;" class="row header">Challan Data</h3>

    @Html.Partial("_DateCommonFT")
}

答案 1 :(得分:0)

请使用Ajax.Begin表单,您可以使用OnSuccess方法。

在VIew中: -

 @using (Ajax.BeginForm("Index", "Challan", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "divEmp",  OnSuccess = "AjaxForm" }))
    {
    }

在脚本中: - 这里从post controller返回json。

function AjaxForm(response){
.....do as uou want...
}
控制器中的

: -

[HttpPost]
 public ActionResult Index(DemoCLass objdemo)
 {
   return json(new {IsSuccess = true},JsonRequestBehavior.AllowGet);
 }

如果您对此有任何疑问,请告诉我

答案 2 :(得分:0)

使用PartialView方法返回没有布局的视图。

[HttpPost]
public ActionResult Index(DemoCLass objdemo)
{
   return PartialView();
}

如果您只想为ajax表单提交而返回没有布局标记的html,您可以检查请求标头以查看请求是否是xhr请求。 Request.IsAjaxRequest()方法在这里很方便。

[HttpPost]
public ActionResult Index(DemoCLass objdemo)
{
   if (Request.IsAjaxRequest())
   {
      return PartialView();
   }
   else
   {
      return View();
   }
}