2017-06-21 13 views
0

投稿メソッドの全体表示ではなくajaxを使用してdivデータを読み込もうとしています。 ですが、投稿アクションにはobject%20HTMLInputElementアクション名が返されます。Ajax.BeginFormはmvcで間違ったURLをレンダリングします

コントローラ:それは私のようにスクリプトを定義している_Layout.cshtml含ま

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

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

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

ビュー:投稿のみレンダリングするためにどのように

<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)をロードせずに済みます。

+2

大変申し訳ございません。あなたは直面している問題は何ですか?私はまだあなたの現在の期待された行動を理解するのに困っています。 – Shyju

+0

hasan

+0

のようにdivタグを閉じます@Priyaあなたの質問を、エラーメッセージ/予期しない動作と予想される結果で更新してください。 –

答えて

1

divタグを閉じて、次のようにコントローラにHtmlForgeryTokenを受け取ってみることができますか?

あなたもAjax.Begin 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()を返すことによってPartialViewを使用して、ターゲットのdivをしてください埋めることができますが、この方法を使用することができます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); 
} 

あなたはこの1つで任意のクエリを持っているならば、レイアウトせずにビューを返すためにPartialViewメソッドを使用して、私に

0

を教えてください。

[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

関連する問題