2016-12-07 7 views
0

이 문제는 많이 있지만 지금은 정답으로 검색했습니다.버튼 클릭 후 부분보기로드

footer의 _Layout 페이지에 문의 양식이 있지만 버튼을 클릭하면 부분보기가 새 페이지에서 열립니다.

jquery.unobtrusive-ajax.js를 반드시 포함해야합니다. 여기에 내가 가진 것이있다.

컨트롤러 : 스크립트 _Layout

[HttpGet] 
    public ActionResult Call() 
    { 
     return PartialView("_PartialFooter"); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Call(CallMe callMe) 
    { 
     if(ModelState.IsValid) 
     { 

     } 
     return PartialView("_PartialFooter"); 
    } 

바닥

@using (Ajax.BeginForm("Call", "Home", new AjaxOptions { UpdateTargetId = "result" })) 
          { 
           <div id="result" class="margin-bottom-5"> 
            @Html.Action("Call", "Home") 
           </div> 
           <button class="btn btn-common-small margin-bottom-10 pull-right" type="submit">Send</button> 
          } 

@Scripts.Render("~/bundles/jquery") 
    @Scripts.Render("~/bundles/bootstrap") 
    @Scripts.Render("~/bundles/myscripts") 
    @RenderSection("scripts", required: false) 
@section Scripts { 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script> 
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

} 

_PartialFooter (부분도) 누군가가

@model servicemadsen.Models.CallMe 


@Html.AntiForgeryToken() 
    <div class="row"> 
     <div id="result" class="margin-bottom-5"> 


      <div class="col-md-6"> 
       @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control", @placeholder = "Navn" } }) 
      </div> 
      <div class="col-md-6"> 
       @Html.EditorFor(model => model.Phone, new { htmlAttributes = new { @class = "form-control", @placeholder = "Telefon" } }) 
      </div> 
      <div class="col-md-12"> 
       @Html.TextAreaFor(model => model.CallMeMessage, new { @class = "form-control", @placeholder = "Besked", @cols = 80, @rows = 7 }) 
      </div> 
      <div class="col-md-12"> 
       @Html.ValidationMessageFor(model => model.Name, string.Empty, new { @class = "field-validation-error" }) 
       @Html.ValidationMessageFor(model => model.Phone, string.Empty, new { @class = "field-validation-error" }) 
       @Html.ValidationMessageFor(model => model.CallMeMessage, string.Empty, new { @class = "field-validation-error" }) 
      </div> 

     </div> 
     </div> 

희망을 도울 수있는 바디 태그를 자사의 아마도 내가 필요로하는 어떤 거짓말 쟁이

+0

리디렉션하는 경우'jquery.unobtrusive-ajax.js'가 올바르게로드되지 않았다는 의미입니다. 레이아웃에서'@section Scripts {'를 갖는 것은 의미가 없으며 그 부분은 jquery의 두 번째 사본을 포함합니다. 'jquery.unobtrusive-ajax.js' 파일을'@ Scripts.Render ("~/bundles/myscripts")'다음에 옮깁니다 (또는'jqueryval' 번들을 더 잘 사용하고'@section 스크립트 {' –

답변

2

microsoft jquery unobstrusive ajax를 설치하셨습니까? 그걸로 시도하지 않으면. 나는 당신의 코드와 작품으로 몇 가지 테스트를 수행합니다.

편집 : 나는 또한 그래서 당신은 변화를 볼 수있는 테스트

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Call(CallMe callMe) 
    { 
     if (ModelState.IsValid) 
     { 
      ModelState.Clear(); 
      callMe.CallMeMessage = callMe.CallMeMessage + " i was on the server"; 
     } 
     return PartialView("_PartialFooter", callMe); 
    } 

  @using (Ajax.BeginForm("Call", "Home", new AjaxOptions { UpdateTargetId = "result", InsertionMode = InsertionMode.Replace})) 
     { 
      <div id="result" class="margin-bottom-5"> 
       @Html.Action("Call", "Home") 


      </div> 
      <button class="btn btn-common-small margin-bottom-10 pull-right" type="submit">Send</button> 
      } 

에 대한 몇 가지 코드를 변경합니다.

+0

예 nuget에서 마이크로 소프트 – tinaw25

+0

@ tinaw25에 의해 Microsofr.jQuery.Unobtrusive.Ajax를 설치했고 레이아웃에 스크립트를 추가 했습니까? –

+0

@ tinaw25 이것은 내 테스트입니다. 도움이되기를 바랍니다 .https : //github.com/Manuel- Iriarte/stackoverflow-20161207 –