2010-02-02 50 views
2

只是想知道人们怎么想创建一个区域来保存/管理基于json的请求(注意我主要是想获取数据而不是发布数据)。我知道它不是你对一个区域的典型使用(也就是说,通常你会为博客和论坛创建一个不同的区域),但我已经到了我的项目并不庞大的地步,但我肯定有很多json的东西,似乎混淆这个问题,并让事情看起来“不洁净”。ASP.Net MVC:为json请求创建一个区域

例如,在每个控制器的底部是我放置json动作的地方,以便它们不会与其他动作混淆在一起,我用json作为它们的前缀 - 我不应该这样做。 。我也有json的具体视图模型,我必须以json作为前缀,等等等等。

将它们放在自己的区域并能够删除json前缀所有在一起,并有该地区定义......你认为或者这是一个坏主意?

干杯 安东尼

回答

1

我认为这是一个好主意。拥有一个异步区域,所有控制器只实现异步操作,将清理你的代码。当你的项目变得如此庞大以致你想要扩展到常规领域时,问题就会出现,那么最终会出现一些可能最终会变得混乱的命名约定。

+0

在这一点上,我不认为该项目将达到这样的规模,但我确实看到了你的观点。 – 2010-02-02 23:59:51

0

你也可以为你的json动作创建一个单独的控制器。我认为这比创建一个区域更有意义。你需要json特定的视图,内容,模型等还是只需要一些异步操作?

+0

我没有不同的看法,但我有不同的内容和模型......它不仅仅是异步的。 – 2010-02-02 23:58:59

0

我认为创建单独的区域甚至单独的操作并不是什么新鲜事。如果这些操作返回相同的数据,并且仅在请求类型方面有所不同 - ajax或非ajax,则可以检查请求是什么并使用相应的数据格式。

public ActionResult Index() 
{ 
    MyViewModel model = DataAccess.GetMyViewModel(); // Data access code 
    if (Request.IsAjaxRequest()) 
    { 
     return Json(model); 
    } 
    else 
    { 
     return View(model); 
    } 
} 
+0

我希望这是简单的,但在很多情况下,为json版本返回的模型是不同的,并且通常使用的上下文也不相同,从而使json方法在语义上与其对应的get方法不同。 – 2010-02-02 23:57:38

+0

然后,您可以检查该方法是否使用ajax进行处理,并且如果没有返回一条消息,指出只能使用ajax调用该消息。根据返回类型命名方法并不是一个好习惯。 – 2010-02-03 07:56:00