用于ASP.NET MVC 2异步操作的强类型API

时间:2010-05-17 06:10:58

标签: asp.net asp.net-mvc asp.net-mvc-2 lambda strong-typing

是否有人试图为ASP.NET MVC 2异步操作创建强类型API?

祝你好运, Alexey Zakharov

2 个答案:

答案 0 :(得分:0)

如果我理解正确的话,我相信我们最近做过类似的事。我们使用ASP.NET MVC 2 Futures库中的JsonValueProviderFactory来实现强类型操作(关于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客户端”的内容。

希望这有帮助。

答案 1 :(得分:-1)

MVC可以做到这一点,但我从您提供的代码示例中了解到,您需要基于json的API。

Microsoft针对这种情况创建了WebAPI,它既是强类型的,也遵循其底层设计中的MVC模式,但它也运行良好,可以在同一Web应用程序中与MVC一起使用。

然而:

如果您愿意,可以使用简单的Json序列化程序包从MVC控制器操作提供序列化对象,只需返回结果字符串,ActionResult也支持此场景,对于帖子使用内置元数据基础结构来验证您​​的类型特定来自帖子的数据为您提供所需的类型安全性。

将MVC控制器视为休息端点也是可能的,只需以正确的方式构建控制器以支持典型的REST调用。

但我强烈建议使用WebAPI,因为它更适合API场景。