2010-05-17 1 views

ответ

-1

MVC вполне может сделать это, но мое понимание от образца кода вы предоставили является то, что вы хотите API на основе JSON.

Корпорация Майкрософт создала WebAPI для этой ситуации, она строго типизирована и соответствует шаблону MVC в своем базовом дизайне, но также хорошо работает и может использоваться вдоль стороннего MVC в рамках одного и того же веб-приложения.

Однако:

Если вы хотите вы можете предоставить сериализованные объекты из действия контроллера MVC с помощью простого пакета Json serialiser и просто возвращая полученную строку, ActionResult поддерживает этот сценарий тоже, и для сообщений использовать встроенный инфраструктуру метаданных для проверки ваших конкретных данных типа из сообщения, дающего вам необходимую безопасность по типу.

Рассмотрение контроллера MVC как конечной точки отдыха также возможно только для правильного управления контроллером для поддержки типичных вызовов REST.

Я бы настоятельно рекомендовал использовать WebAPI для этого, так как он лучше подходит для сценариев API.

+0

Wardy Возможно, вы пропустили идею вопроса? В текущем ASP.NET MVC 2 есть async api, основанный на подходе магии. Интересно, кто-нибудь пытался создать строго типизированную альтернативу –

+0

, вы все еще хотите получить ответ на этот вопрос? – War

+0

все равно обновил мой ответ ... что-то должно быть отмечено как ответ для этого – War

0

Я считаю, что мы недавно сделали что-то подобное, если правильно поняли вас. Мы использовали JsonValueProviderFactory из библиотеки ASP.NET MVC 2 Futures для достижения строго типизированного действия (подробнее об этом на haaked.com).

Для действия асинхронных мы имеем что-то похожее на это:

[HandleError] 
public class HomeController : AsyncController 
{ 
    [HttpPost] 
    public void IndexAsync(Person person) 
    { 
     DoSomething(); 
    } 

    public ActionResult IndexCompleted() 
    { 
     return View(); 
    } 
} 

public class Person 
{ 
    public string Forename { get; set; } 
    public string Surname { get; set; } 
} 

и просто сделать POST к действию с:

{"Forename": "Cheesy", "Surname": "Goat"} 

Там есть отличный Firefox плагин, чтобы помочь тестируя это как «REST Client», который я бы рекомендовал также.

Надеюсь, это поможет.