2017-10-20 1 views
0

어떻게 Doctor Experience 탭 패널을 얻을 수 있습니다 후 submit uploading image어떻게 MVC를 사용하여 반환 함수 후 자바 스크립트를 호출?

Cs.Html :

@using (Html.BeginForm("AddDoctorImage", "Doctor", FormMethod.Post, new { enctype = "multipart/form-data" })) 
      { 
       <section> 
        <div class="row"> 
         <div class="col-lg-4"> 
          <fieldset class="form-group"> 
           <label class="form-label semibold">Upload Doctor Image</label>&nbsp;&nbsp; 
           @*<input type="file" name="postedFile" id="txtUploadImage" class="btn btn-rounded btn-file" style="cursor:pointer;" />*@ 
           <span class="btn btn-rounded btn-file"> 
            <span>Choose file</span> 
            <input type="file" name="postedFile" id="postedFile"> 
           </span> 
          </fieldset> 
         </div> 
         <div class="col-lg-4"> 
          <fieldset class="form-group"> 
           <label class="form-label semibold">Perview Image</label>&nbsp;&nbsp; 
           <img id="image_upload_preview" src="http://placehold.it/100x100" alt="your image" /> 
           <a id="remove" onclick="javascript:ClearFileUploadControl();" style="display: none; cursor: pointer;">Remove</a> 
          </fieldset> 
         </div> 
         <div class="col-lg-4"> 
          <input type="submit" name="ImageUpload" value="Upload image" class="btn btn-rounded btn-inline btn-success" /> 
          <span style="color:green">@ViewBag.Message</span> 
         </div> 
        </div> 
       </section> 
      } 

컨트롤러 :

[HttpPost] 
     public ActionResult AddDoctorImage(HttpPostedFileBase postedFile) 
     { 
      int docId = Convert.ToInt32(Session["docID"]); 


      if (postedFile != null) 
      { 
       string path = Server.MapPath("~/Doctor/"); 
       if (!Directory.Exists(path)) 
       { 
        Directory.CreateDirectory(path); 
       } 

       var filename = docId.ToString() + ".png"; 
       postedFile.SaveAs(path + filename); 
       ViewBag.Message = "File uploaded successfully."; 
      } 
      return javacript; 
     } 

어떻게 자바 스크립트 함수를 return 문을 노호 전화

스크립트

var linkHref = "tabs-1-tab-1"; 
       $('#myLinks li a').removeClass('active'); 
       $('#myLinks li') 
        .find('a[href="#' + linkHref + '"]') 
        .parent() 
        .next() 
        .find('a') 
        .tab('show') 
        .addClass('active') 
        .attr('data-toggle', 'tab'); 
       $('a.nav-link').not('.active').css('pointer-events', 'none'); 
+1

에게 당신을 일이이 작업에 대한 겸손한 Ajax를 추가해야 해달라고, 당신은 뷰 또는 템플릿 (마스터 페이지) 내부 js 스크립트를 추가하고 실행할 때 실행하자 그는 폼이로드됩니다. –

+0

ok 자바 스크립트 함수 서버 측을 클라이언트 @ MasterYoda로 호출하는 방법 –

+1

정확히 달성하려는 것은 무엇입니까? POST를 수행하면 브라우저가 전체 페이지를 다시로드하므로 페이지를 반환해도 완전히 새로운 빈 페이지가 렌더링됩니다. 아마도 당신이하려는 일은 더 간단한 방식으로 이루어질 수 있습니다. 페이지를 다시로드하지 않으려면 "Ajax image upload"를 검색 할 수 있습니다.이 경우 업로드가 끝나면 콜백 기능을 등록 할 수 있습니다. –

답변

2

BeginForm에는 OnSucess 옵션이 있습니다. 여기에는 성공시 수행 할 모든 작업을 호출해야합니다. 클라이언트 측에서

@using (Ajax.BeginForm("AddDoctorImage", "Doctor", FormMethod.Post, new { enctype = "multipart/form-data" } , new AjaxOptions { OnSuccess = "ChangeTab" })) 

는 ... 자바 스크립트

<script type="text/javascript"> 
    function ChangeTab(result) { console.log(result) 
      var linkHref = "tabs-1-tab-1"; 
      $('#myLinks li a').removeClass('active'); 
      $('#myLinks li') 
       .find('a[href="#' + linkHref + '"]') 
       .parent() 
       .next() 
       .find('a') 
       .tab('show') 
       .addClass('active') 
       .attr('data-toggle', 'tab'); 
      $('a.nav-link').not('.active').css('pointer-events', 'none'); 
    } 
</script> 

에서이 기능을 defince 그리고 당신은

<script src="~/Scripts/jquery-1.8.2.min.js"></script> 
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script> 

Here is a Tutorial

+0

[https://i.stack.imgur.com/WmsMQ.png]이 사진을 참조하십시오. –

+0

아하하가 될 것입니다. ** @ using (Ajax.BeginForm (** now updated updated check –

+0

) 하지만 난 멀티 파트와 함께 문제가 될 것 같아요 Image –

관련 문제