2017-06-21 34 views
0

我想在post方法上使用ajax而不是整個視圖加載div數據。 ,但是它會在操作後返回object%20HTMLInputElement操作名稱。Ajax.BeginForm在mvc中呈現錯誤的URL

控制器:

[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> 

如何只呈現發佈ction不需要在使用ajax的post請求中加載整個頁面(_layout.cshtml)。

+2

對不起!你面臨的問題是什麼?我仍然無法理解您當前和預期的行爲。 – Shyju

+0

關閉你的div標籤,如

hasan

+0

@Priya更新你的問題與錯誤消息/意外的行爲和預期的輸出。 –

回答

1

您可以嘗試關閉您的div標籤,並在控制器中接收HtmlForgeryToken,如下所示。

您還可以在Index方法

[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") 
} 
0

充滿PartialView目標的div通過返回PartialView()請Ajax.Begin形成可以使用的onSuccess方法。

鑑於: -

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

腳本: - 這裏從後控制器返回JSON。

function AjaxForm(response){ 
.....do as uou want... 
} 

在控制器: -

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

,如果你在這一個任何查詢,然後告訴我

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(); 
    } 
} 
+0

如果我的ajax帖子沒有按控制器發佈方法,該怎麼辦?它發生錯誤的URL'object%20HTMLInputElement' – Priya

+0

檢查頁面的視圖源並查看它爲什麼會爲表單生成錯誤的操作屬性值。我的假設是'_DateCommonFT'部分視圖呈現的代碼正在破壞標記。你可以嘗試發表評論,並嘗試?這將幫助你隔離問題 – Shyju

+0

我通過評論部分視圖進行了檢查,僅包含一個用於控制帖子操作的按鈕。但沒有運氣..呈現在'物體%20HTMLInputElement' – Priya