2013-10-21 33 views
0

所以我對JavaScript和mvc很新。C#對象基於mvc框架的Javascript對象

我一直在研究後端服務,以在mongodb和javascript前端接口之間來回傳遞非常大的對象,這將允許用戶填充這些對象。問題是我的後端對象有幾百行代碼長,我不想將它們複製到javascript對象中,因爲我對JavaScript很陌生。有沒有辦法將C#對象類轉換爲JavaScript類,以便爲mvc框架創建模型?這種結構有一部分我不明白嗎?

+0

通常您會使用Json.NET庫將C#類序列化爲JSON字符串,這是幾乎所有JavaScript框架所期望的。新版本的ASP.NET MVC帶有Json.NET作爲默認的json序列化器,所以只要你的客戶端請求json就會使用它。 –

+0

我不是在尋找一個序列化器,而是一種自動化或者使我的模型不起作用的方法,以確保它與我的c#對象本質上是相同的對象 –

+1

您不能真正將服務器端C#代碼「鏈接」到客戶端JavaScript。你只需要讓他們一起說話。序列化是不可避免的。您可以做的最好的事情是使用一個JavaScript框架,與RESTful Web服務進行對話併爲每種類型的模型實現一個ASP.NET Web Api控制器。然後,您只需將您的JavaScript框架指向諸如「api/People」之類的URL,並且該框架將知道如何進行讀取,更新,創建和刪除請求。 –

回答

1

您應該創建一個模型服務器端,對應於您的「非常大的對象」。感謝

public ActionResult YourMethod(string param1) 
{ 
    //get your object 

    return Json(yourObject, JsonRequestBehavior.AllowGet); 
} 

您可以從您的JS異步調用此方法來調用Ajax:
然後,你可以把它從你的控制器使用傳遞給你的JS

$.ajax({ 
    url   : "@Url.Action("YourMethod", "YourController")", 
    contentType : "application/json; charset=utf-8", 
    dataType : "json", 
    type  : "POST", 
    data  : JSON.stringify({param1: "test"}) 
}) 
0

看一看scriptsharp

它將c#編譯爲javascript。如果你以正確的方式組織你的代碼,你會從JS中的c#1:1中獲得類。

+1

我已經使用過ScriptSharp,並且我會這樣說:如果你在JavaScript中工作並不舒適,您將遇到Script#的問題。如果您希望編譯器強制執行類型安全,則腳本#可能是一個不錯的選擇。但是,服務器和客戶端之間的代碼共享很難,其周圍的社區不是很大,這使得難以排除故障。 –

+0

我同意支持腳本#並不是世界上最好的。但僅僅爲了在正確的js'命名空間中生成poco'可以做到這一點。 – lboshuizen