有关使用Webmatrix和AJAX的基本问题

时间:2013-09-13 01:27:27

标签: jquery ajax json webmatrix

过去几天我一直在尝试和研究Webmatrix与AJAX的使用,不幸的是我似乎无法找到足够的信息来帮助我实现项目。我希望能够进一步了解这一切在原理上是如何运作的。希望这也有助于其他正在了解这一点的人。我将不胜感激任何建议和有用的链接。

(请原谅这篇文章的篇幅。)

我项目的一些背景知识:

我正在使用cs类来汇编多个List<int>List<double>,使用数据库中的数据和一些半复杂的算法。这些列表包含许多视频的信息,我正在使用这些列表来帮助我构建一个小视频应用程序,最终使用html5视频和画布播放生成的视频列表。 我一直在几个不同的编程环境和框架中测试这个项目(仅使用javaScript,使用openFrameworks和C ++,使用php与数据库和ajax,javaScript等)。我之前使用ajax没有遇到任何麻烦,但是我在试图在Webmatrix中实现这个概念时遇到了困难。

C#数据类型,JSON和javaScript之间的关系是什么?

我与php一起使用的解决方案是这样的:

$sequenceData = array("array1" => $dataArray1, 
    "array2" => $dataArray2, 
    "array3" => $dataArray3,
    "array4" => $dataArray4);

echo json_encode($sequenceData);

然后使用AJAX在javaScript中使用这些数组。我不知道这是否是一个很好的解决方案,但对我来说这很简单并且有效。

现在我一直在尝试使用C#数据类型找到一个很好的解决方案。 (我在过去几周才真正学会了C#,所以请耐心等待。)我当前的想法是,我的数据要么是List<Dictionary<string, string>>,要么将我的数据转换为字符串,所以它们是所有相同的,但这似乎有点笨拙,这就是我想知道JSON如何处理这些数据类型以及javaScript如何(如何)识别它们? 或者,使用一个简单的类(struct?)可能更优雅,因此我可以将数据作为一个对象传递。在这种情况下我仍会使用列表,所以问题仍然存在,这会有效吗? javaScript会成为C#对象吗?列表是否被视为数组?我使用Google和Lynda.com获取有关c#,json等的更多信息,但我还没有完全理解这些是如何工作的。

Webmatrix中的JSON编码

我一直在使用两个来源来理解JSON助手并通过AJAX获取编码数据:

来自microsoft.com和 来自mikesdotnetting.com(链接到特定文章)

不幸的是,我还没能成功从我的cshtml文件传递数据。我希望获得有关JSON助手的更多信息,但在网上找不到更多有用的信息。使用jQuery的$.ajax(我在之前的试用中使用的,以及php)以及$.getJSON(在上面的链接中使用)函数,我无法成功从中检索JSON数据cshtml文件。我认为从使用AJAX的javaScript继续的代码与我以前使用php创建要传递的数据时的代码没有本质区别,所以我想知道我在编码JSON数据时是否出错。

我主要尝试了mikesdotnetting.com上的这两个概念

var json = Json.Encode(data);
Response.Write(json);

Json.Write(data, Response.Output);

所有我用php做的都是echo json_encode($sequenceData);,一切似乎都是单独工作的,所以我想知道我在这里是不是错了,php和webmatrix / razor / c#在这里的工作方式不同。

我希望这篇文章不要太模糊。我尝试了很多不同的代码位和方法来解决这个问题,这就是为什么我没有附加更多我正在使用的代码。我认为我需要使我的整个过程和概念更适合在Webmatrix,C#等中最适合的方式,而不仅仅是“翻译”。我真的想更多地了解这些主题(JSON帮助程序,与AJAX的通信,过程中的数据类型等),并希望人们可以分享一些建议。

(谢谢,如果你在本帖末尾还在我身边)

1 个答案:

答案 0 :(得分:2)

在C#中,有许多预定义的原始数据类型:int,string,double,byte,datetime等。您可以使用类来定义自己更复杂的数据类型。视频数据类型声明的示例可能如下所示:

public class Video
{
    public int VideoId {get;set;}
    public string Title {get;set;}
    public DateTime ReleaseDate {get;set;}
}

您可以使用以下语法实例化Video类的实例:

Video myVideo = new Video{
    VideoId = 1,
    Title = "Spartacus",
    ReleaseDate = new DateTime(1960, 12, 8)
};

到目前为止,这么好。您可以在某种集合中从编程的角度实例化许多视频并将它们保持在一起。您对所使用的集合类型有多种选择,但通用List<T>很常见。 T代表列表所包含的类型;在这种情况下,TVideo

List<Video> videoCollection = new List<Video>();
videoCollection.Add(myVideo);

由于声明了列表保存的类型,因此该列表被称为强类型。数组不是强类型的。它们可以包含任何类型的对象。

在WebMatrix(或更准确地说,ASP.NET Web页面框架)中,Json帮助程序具有接收对象或集合的方法,并将它们序列化为JSON。视频的每个JSON表示都将具有VideoId,Title和ReleaseDate属性:

[{"VideoId":1,"Title":"Spartacus","ReleaseDate":"\/Date(-286070400000)\/"}]

从那时起,您可以在页面文件中使用jQuery来处理JSON对象,其方式与在PHP中完全相同。

在我的网站上引用的文章中,数据是从数据库中获取的,幕后有一些看不见的魔法。数据转换为dynamic类型,框架根据数据库获取的数据列在运行时添加属性。