2014-11-02 8 views
0

이 문제와 관련하여 잠시 벽을 치고 있습니다. 주보기를 새로 고치지 않고 모드에서 다시 게시하는 방법을 모르겠습니다.ASP.net MVC 및 부트 스트랩 모달 내보기

나는

BasicCreate보기

을 다음 부트 스트랩 모달

<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modal" aria- hidden="true"> 
<div class="modal-dialog"> 
    <div class="modal-content"> 
     <div class="modal-header"> 
      <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button> 
      <h4 class="modal-title" id="myModalLabel"></h4> 
     </div> 
     <div class="modal-body"> 
      @Html.Partial("~/Views/Kontakt/BasicCreate.cshtml", new IDE3_CRM.ViewModels.BasicKontaktViewModel()) 
     </div> 
    </div> 
</div> 
이있는 전망을
@model IDE3_CRM.ViewModels.BasicKontaktViewModel 

@{ 
    Layout = null; 
} 

@using (Html.BeginForm("BasicCreate", "Kontakt", FormMethod.Post, new { id = "basicCreate" })) 
{ 
@Html.AntiForgeryToken() 

<div class="form-horizontal"> 
    @Html.HiddenFor(model => Model.idFirma) 


    //Similar forms group are intentionally ommited, one below is left for the reference 
    <div class="form-group"> 
     <label class="control-label col-md-2">Bilješke</label> 
     <div class="col-md-10"> 
      @Html.TextAreaFor(model => model.Biljeske, new { @class = "form-control", @rows = "5" }) 
      @Html.ValidationMessageFor(model => model.Biljeske) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input type="submit" value="Spremi" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 
} 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#basicCreate').submit(function() { // you can use any selector that match your form 
     $.ajax({ 
      url: this.action, 
      type: this.method, 
      data: $(this).serialize() 
     }).done(function (data) { 
      // Do something when server returns success! 
     }); 
     return false; // prevent the form submission 
    }); 
}) 
</script> 

BasicCreate 컨트롤러 :

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public void BasicCreate([Bind(Include = "idKontakt,idOvlasti,idFirma,Username,Password,Ime,Prezime,Funkcija,Tel1,Mob1,Fax,Email1,Adresa1,Grad,Drzava,PostanskiBroj,Biljeske,Aktivan")] BasicKontaktViewModel kontakt, int? idCompany) 
    { 
     if (ModelState.IsValid) 
     { 
      Kontakt _kontakt = new Kontakt(); 
      _kontakt.Adresa1 = kontakt.Adresa1; 
      _kontakt.Aktivan = true; 
      _kontakt.Biljeske = kontakt.Biljeske; 
      _kontakt.Drzava = "Hrvatska"; 
      _kontakt.Email1 = kontakt.Email1; 
      _kontakt.Funkcija = kontakt.Funkcija; 
      _kontakt.Grad = kontakt.Grad; 
      _kontakt.idFirma = kontakt.idFirma; 
      _kontakt.idOvlasti = 4; 
      _kontakt.Ime = kontakt.Ime; 
      _kontakt.Mob1 = kontakt.Mob1; 
      _kontakt.Password = kontakt.Password; 
      _kontakt.Prezime = kontakt.Prezime; 
      _kontakt.Tel1 = kontakt.Tel1; 
      _kontakt.Username = kontakt.Username; 

      db.Kontakt.Add(_kontakt); 
      db.SaveChanges(); 
     } 
    } 

때마다 모달 내에서 제출을 클릭하면 전체보기가 전송되고 내가 수행하고자하는 것은 BasicCreate 만 제출하는 것입니다. 참고로 BasicCreate 컨트롤러가 정상적으로 작동하고 새 Kontakt가 생성됩니다.

편집 나는 방법의 다양한 실험을 봤는데 문제가 아니라 그것에 대한 이유를 지역화 할 수 있었다. 그것은 BasicCreate 컨트롤러가 어떤 유형의 리턴 객체로 설정 되든 포스트 백을하는 것으로 보입니다. void, ActionResult, 빈 뷰 등 ... 항상 포스트 백하고 리디렉션됩니다. /Kontakt/BasicCreate

답변

1

다음과 같이 AJAX 호출을 사용할 수 있습니다.

$('form').submit(function() { // you can use any selector that match your form 
    $.ajax({ 
    url: this.action, 
    type: this.method, 
    data: $(this).serialize() 
    }).done(function(data){ 
    // Do something when server returns success! 
    }); 
    return false; // prevent the form submission 
}); 

그런 다음 유효성 검사를 추가하거나이 아마도 솔루션입니다

+0

서버 결과를 확인 할 수 있습니다, 그러나,보기 모달 내부 = "/ 티켓/편집 메인보기 즉'<양식 액션의 형태로 값이/4143 "method ="post ">는 동일합니다. –

+0

'BasicCreate' 뷰에서 컨트롤러와 액션 파라미터를'@ Html.BeginForm()'호출에 추가하기 만하면됩니다. – Groyoh

+0

내가 한 모든 것은/Kontakt/BasicCreate의 빈보기입니다. –