簡體   English   中英

是否有一個項目會自動生成JavaScript代理代碼以調用ASP.NET MVC操作方法?

[英]Is there a project that auto-generates JavaScript proxy code to call ASP.NET MVC action methods?

是否有采用現有控制器,分析其公共Action方法並生成JavaScript代理類的c#代碼,以便可以被其他Javascript代碼輕松調用? 我已經知道我們可以使用jquery來執行$ .post和$ .get來調用我們的ajax服務,但是我相信可以通過不必指定AJAX Web服務URL的相對URL和每個參數名稱來簡化此過程。參數輸入。

例如,假設我們具有以下C#控制器:

public class CustomerController : Controller
    {

        public JsonResult Create(string name, string address)
        {
            return new JsonResult {Data = 11111};
        }

        public JsonResult Update(int id, string name, string address)
        {
            return new JsonResult {Data = true};
        }
    }

我想通過使用以下方式來調用控制器的AJAX操作方法。

Proxy.Customer.Create("Scott Gu", "Somewhere in Redmond").done(function(id) {
      /* id is an int and not an string */
      Proxy.Customer.Update(id, "Scott Gu", "Somewhere in Seattle");
});

是否存在允許我執行此操作的項目?

更新資料

事實證明,沒有一個項目可以滿足我的要求。 除了SignalR之外,Phil Haack的Controller Inspector項目也可能有用。 它可以檢查任何給定的控制器,並揭示其具有的操作方法,其接受的參數,其類型等。

以下鏈接包含用於獲取有關給定控制器的詳細信息的getter方法。 https://github.com/Haacked/CodeHaacks/blob/master/src/MvcHaack.ControllerInspector/ControllerDetailer.cs

更新2

h Phil Haack已經開發了一個JavaScript代理。 教程可以在這里找到。

我知道,這是一個老問題,但是我剛剛找到了一個似乎符合您要求的項目:

ProxyApi史蒂夫Greatrex
http://blog.greatrexpectations.com/2012/11/06/proxyapi-automatic-javascript-proxies-for-webapi-and-mvc/

這個出色的另一個項目使您可以完成自己想要的事情。
http://jsnet.codeplex.com/
這個項目會為MVC和WebApi控制器自動生成JavaScript代理。

通過該項目,您還將擁有Intellisense。

window.test = function test() {
/// <summary>
///This example works.
///You have the Intellisense. It's great!!!
///No hard coded url.
///</summary>

//-- settings of ajax request.
var a = $dpUrlSet.Customer.Create.$action0.$AjaxSettings();

//-- your parameters of action method
a.data.name = "Scott Gu";
a.data.address = "Somewhere in Redmond";

//-- stringify
a.data = JSON.stringify(a.data);

//-- send ajax request
var xhr = $.ajax(a);

xhr.success(function (id) {
    /// <summary>Response of ajax request</summary>

    //-- settings of ajax request.
    var a = $dpUrlSet.Customer.Update.$action0.$AjaxSettings();

    //-- your parameters of action method
    a.data.id = id;
    a.data.name = "Scott Gu";
    a.data.address = "Somewhere in Seattle";

    //-- stringify
    a.data = JSON.stringify(a.data);

    //-- send ajax request
    var xhr = $.ajax(a);

});
}

我不知道一個項目能完全滿足您的需求,但是您看過David Fowl的SignalR嗎? 該項目具有基於SignalR集線器而非MVC控制器的JavaScript代理生成器。 我確定代碼可以修改。

如果您從github獲得源代碼並查看示例項目,則有一個聊天室示例。 使用firebug / chrome開發工具等,您可以看到javascript。

根據我的觀察,javascript是通過代理創建的。 在示例項目中,有一個“ hubs”文件夾,其中包含通過代理插入javascript文件的方法。

實際的代理工作在此處的核心SignalR庫中完成, 是使用的默認JavaScript代理生成器。

您可以在此處看到聊天的實時示例,David Fowl有時也在房間里。 我相信他能比我自己更好地解釋代理人的東西。

菲爾·海克(Phil Haack)的一個項目可以解決我的一項需求。 仍然需要將每個參數輸入與參數名稱配對。 這是一個教程

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM