2017-09-25 62 views
1

我正在將我現有的MVC項目實現到Umbraco中。在我現有的項目中,我使用jQuery爲我的控制器添加了異步ajax帖子。用一把umbraco SurfaceController,任務將是這樣的:異步發佈到Umbraco中返回JSon的控制器

public class MySurfaceController: SurfaceController 
{ 
    [HttpPost] 
    public JsonResult PostThatReturnsJSon(myModel model) 
    { 

     // Some logic here that involves 
     // HttpContext.Current.Session["SomeSessionVariable"]; 

     string message = string.Format("Successfully processed"); 
     return Json(new { Success = true, Message = message }); 
    } 
} 

這將無法正常工作,並通過閱讀一把umbraco表面控制器的文章,它指出,表面控制器只設計爲「正常」的形式,文和返回即「CurrentUmbracoPage」。

然後是UmbracoApiController,但由於ApiController是無狀態的,因此不可能使用涉及會話或cookie的邏輯。

如果有人對此提出解決方案或最佳實踐,我會很感激。

問候

回答

0

的UmbracoContext不能使用:在一把umbraco,如果你要調用一個控制器的動作,你應該使用這種格式的網址:

http://yourwebsite.com/umbraco/surface/{controllername}/{action}/{id} 

您也可以點擊下方的鏈接異步調用SurfaceControllers,但是,您的上述代碼確實有效。你確定你是正確的嗎?

表面部分不從路線移除,所以您的網址應該是:http://localhost:58473/umbraco/surface/mysurface/postthatreturnsjson

public JsonResult PostThatReturnsJSon() 
    { 

     // Some logic here that involves 
     // HttpContext.Current.Session["SomeSessionVariable"]; 

     string message = string.Format("Successfully processed"); 
     return Json(new { Success = true, Message = message }, JsonRequestBehavior.AllowGet); 
    } 
+0

非常感謝Mikkel - 如上所述,從jQuery調用控制器時,我錯過了/ umbraco /路徑的一部分。 – micknt

+0

啊 - 很高興你解決了它:) – Mikkel