2013-10-08 6 views
0

Я новичок в umbraco. Я пытаюсь создать виджет электронной почты для нижнего колонтитула моей домашней страницы. То, что я пытаюсь достичь, отправляет почту, а затем передает json statuscode в javascript. Я задаюсь вопросом, можно ли сделать это с помощью Razor скриптUmbraco как позвонить CHTML Razor для передачи json statuscode на javascript

код

My Javascript выглядит как следовать

/* ---------------------------------------------------------------------- */ 
/* Newsletter Subscription 
/* ---------------------------------------------------------------------- */ 

if ($().validate) { 
    $("#send-newsletter-form").validate(); 
} 

var newsletterForm = $("#newsletter-form"); 
if (newsletterForm && newsletterForm.length > 0) { 
    var newsletterSubscribeButton = newsletterForm.find("#subscribe"); 
    var newsletterEmailInput = newsletterForm.find("#newsletter"); 

    newsletterSubscribeButton.bind("click", function() { 

     if ($("#newsletter-form").valid()) { 
      $("#subscribe").attr('disabled', 'disabled'); 
      jQuery.ajax({ 
       type:"POST", 
       url:\MacroScripts\Email.cshtml", 
       data:getSubscribeFormData(), 
       statusCode:{ 
        200:function() { 
         $("#newsletter-notification-box-success").css('display', ''); 
         newsletterSubscribeButton.removeAttr('disabled', ''); 
         resetSubscribeFormData(); 
        }, 
        500:function() { 
         $("#newsletter-notification-box-error").css('display', ''); 
         newsletterSubscribeButton.removeAttr('disabled'); 
        } 
       } 
      }); 
     } 

     function getSubscribeFormData() { 
      var data = 'action=subscribe'; 
      if (newsletterEmailInput && newsletterEmailInput.length > 0) { 
       data += '&email=' + newsletterEmailInput.attr('value'); 
      } 
      return data; 
     } 

     function resetSubscribeFormData() { 
      if (newsletterEmailInput && newsletterEmailInput.length > 0) { 
       newsletterEmailInput.attr('value', ''); 
      } 
     } 

     return false; 
    }); 
} 

Мой Бритва скрипт (Email.cshtml) до сих пор выглядят как это

@{ 

var addressFrom = Request["email"]; 
const string addressTo = "[email protected]"; 

try 
{ 
    umbraco.library.SendMail(addressFrom, addressTo, "SUBSCRIBE", "Email DUmmy Body", false); 
    //Here i wanna return json statuscode of 200 to javascript 
} 
catch (Exception) 
{ 
    //Here i wanna return json statucode of 500 to javascript possibly with what went wrong. 
    throw; 
} 

}

Возможно ли это с помощью скрипта с бритвой. У меня есть остальные настройки шаблонов

ответ

0

Я нашел решение. Ниже приведен сценарий Razor. разместить это внутри CHTML

@using System.Web.Mvc 
    @{ 
     SubscribeViaEmail(); 
    } 

    @functions 
    { 
     [AcceptVerbs(HttpVerbs.Post)] 
     public JsonResult SubscribeViaEmail() 
     { 
      var response = Response; 
      var flag = true; 
      if(flag) 
       response.StatusCode = (int)HttpStatusCode.InternalServerError; 
      else 
      { 
       response.StatusCode = (int)HttpStatusCode.OK; 
      } 
      return new JsonResult(){Data = response}; 
     } 

    }