2016-08-30 6 views
1

MVCコアは@Ajaxをサポートしていないので、今私のカミソリのページで以下のことを行うにはどうすればいいですか?MVCコアの@Ajax.ActionLinkを置き換える方法

@Ajax.ActionLink("All","All",new AjaxOptions() {HttpMethod="GET",UpdateTargetId="div1",InsertionMode=InsertionMode.Replace}) 
<div id ="div1"> 
</div> 
+1

あなたは何をしたいですか? –

+0

私はボタンクリックに基づいて部分的なビューでdiv1の内容をリフレッシュするでしょう。質問は@Ajax.ActionLinkのMVCコアの置き換えです。 –

+0

mvc 5で生成されたhtmlを調べてください。 'data-ajax-'属性をaspnetコアに適用することができます。 – regnauld

答えて

1

あなたはJqueryまたはJavascriptを使用せずに行うことができることはできませんが、あなたはあなたのニーズを達成するために、このような何かを行うことができます。

Jqueryを使用していない場合は、Download Latest Jqueryをプロジェクトに追加してください。

<div id ="div1"> 
</div> 

まずHTMLを取得し、Jquery

$("#div1").click(function) { 
     $.ajax({ 
      type: "POST", 
      url: "/Controller/getData/", 
      success: function (data) { 
       $("#div1").empty(); 
       $("#div1").append(data.Html); 
      }, 
      error: function (e) { 

      } 
     }) 
    } 

をこのクリックイベントを追加:

[HttpPost] 
public ActionResult getData(PartnerDetail partner) 
{ 
    // Your Logical Stuff.. 
    string viewName = "_childDiv"; // Specify fully qualified path if different Folder. 
    string htmlData = RenderPartialView(viewName, modelData); 
    return Json(new 
    { 
     Html = htmlData, 
     SomeExtraData = true 
    }); 
} 

public string RenderPartialView(string viewName, object Model) 
{ 
    string htmlData = ""; 
    if (string.IsNullOrEmpty(viewName)) 
     viewName = ControllerContext.RouteData.GetRequiredString("action"); 
    ViewData.Model = Model; 
    using (StringWriter sw = new StringWriter()) 
    { 
     ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
     ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
     viewResult.View.Render(viewContext, sw); 

     htmlData = sw.GetStringBuilder().ToString(); 
    } 
    return htmlData; 
} 

これは、ページをリフレッシュしていないとあなたのdiv1コンテンツが更新されます。

関連する問題