2017-09-25 64 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