2016-06-28 37 views
1

您好我有以下我的控制器httppost动作代码中我​​试图在MVC实体框架我的Ajax调用在控制器动作不打断点

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<JsonResult> SaveApplicantDetails() 
    { 
     try 
     { 
      CareerApplicant ca = new CareerApplicant(); 
      if (Request.Files.Count > 0) 
      { 
       var file = Request.Files[0]; 
       ca.ResumeLink = UploadFile.UploadDocFile(file, "uploads"); 
      } 

      ca.Email = Request["email"].ToString(); 
      ca.ContactNo = Request["contact"].ToString(); 
      ca.Name = Request["name"].ToString(); 
      ca.CareerID = Convert.ToInt32(Request["careerid"].ToString()); 
      db.CareerApplicants.Add(ca); 
      db.savechanges(); 

使用AJAX保存在我的数据库申请人细节,以下是我的Ajax调用

$("#btnSave").click(function() { 
     if ($("#form1").valid()) { 
      var fd = new FormData(); 
      var files = $("#flResume").get(0).files; // this is my file input in which We can select multiple files. 
      fd.append("name", $("#txtName").val()); 
      fd.append("email", $("#txtEmail").val()); 
      fd.append("contact", $("#txtContact").val()); 
      fd.append("careerid", $(this).attr("careerid")); 

      for (var i = 0; i < files.length; i++) { 
       fd.append("Uploads" + i, files[i]); 
      } 
      alert("hit1"); 
      $.ajax({ 
       type: "POST", 
       dataType: 'json', 
       url: '@Url.Action("SaveApplicantDetails", "Careers")', 
       contentType: false, 
       processData: false, 
       data: fd.serialize(), 
       success: function (data) { 
        alert("suc called"); 
        if (data == "Success") { 
         alert("suc called inner"); 
         alert("Thanks for your intrest, You applied successfuly."); 
        } 
        else { 
         alert("suc failed called"); 
         alert("Error Occured while saving data."); 
        } 
       } 
      }) 
     } 
     else { 
      alert('the form is not valid'); 
     } 
    }); 
}); 
当我试图打断点在我的控制器它并不打

...我不知道这里why..seeking帮助谢谢

+0

它期待您的FORMDATA携带'防伪token'但你只是发送自定义数据..相反只是'serialize form'并通过'formdata'发送,如'var fd = new FormData($(“#flResume”)。get(0));' –

+0

仍然没有达到断点...没有它我可以得到要知道我在做什么错误...我只需要断点,当我调试内部控制器行动 –

+0

你有你的ajax调用单独的'js'文件或'cshtml'文件?..任何控制台错误?网络标签说什么? –

回答

2

我只是删除[V alidateAntiForgeryToken从我的控制器行动],它的工作..thank你古鲁普拉萨德作出努力:)真的很感谢

[HttpPost] 
public async Task<JsonResult> SaveApplicantDetails() 
{ 
    try 
    { 
     CareerApplicant ca = new CareerApplicant(); 
     if (Request.Files.Count > 0) 
     { 
      var file = Request.Files[0]; 
      ca.ResumeLink = UploadFile.UploadDocFile(file, "uploads"); 
     } 
     ca.Email = Request["email"].ToString(); 
     ca.ContactNo = Request["contact"].ToString(); 
     ca.Name = Request["name"].ToString(); 
     ca.CareerID = Convert.ToInt32(Request["careerid"].ToString()); 
     db.CareerApplicants.Add(ca); 
     int res = await db.SaveChangesAsync(); 
     if (res > 0) 
     { 
      string mailto = Request["email"].ToString(); /*ConfigurationManager.AppSettings["SendMailTo"].ToString();*/ 
      new Thread(() => 
      { 
       EmailMessage EmailMsg = new EmailMessage(); 
       string MessageString = EmailMsg.ReadFile("MailFormat.html"); 
       Career c = db.Careers.Where(x => x.Id == ca.CareerID).FirstOrDefault(); 
       MessageString = MessageString.ToString().Replace("{Title}", c.Title); 
       MessageString = MessageString.ToString().Replace("{dateTime}", DateTime.Now.ToString()); 
       MessageString = MessageString.ToString().Replace("{UserName}", ca.Name); 
       MessageString = MessageString.ToString().Replace("{Email}", ca.Email); 
       MessageString = MessageString.ToString().Replace("{Contact}", ca.ContactNo); 

       EmailMsg.SendMailMessage(ca.Name, "Applicant Person detail.", MessageString, mailto); 
      }).Start(); 
     } 
    } 
    catch (Exception) 
    { 
     return Json("Error"); 
    } 
    return Json("Success"); 
}