ASP.Net将数组从控制器传递到视图到javascript

ASP.Net将数组从控制器传递到视图到javascript,asp.net,asp.net-mvc-3,Asp.net,Asp.net Mvc 3,我有ASP.NETMVC3应用程序。我的任务是从文件中读取点并显示它们。对于从文件中读取点,我使用DLL。我用javascript绘制它们。 这是我的密码: // Controller { IntPtr lib = LoadLibrary("lib.dll"); // getting points from DLL. I get then as array of strings to serialise later string[] points = new string[0];

我有ASP.NETMVC3应用程序。我的任务是从文件中读取点并显示它们。对于从文件中读取点,我使用DLL。我用javascript绘制它们。 这是我的密码:

// Controller
{
  IntPtr lib = LoadLibrary("lib.dll");

  // getting points from DLL. I get then as array of strings to serialise later
  string[] points = new string[0];
  GetArrayPointsAsStrings(points); // I get coordinates - [x1, y1, z1, x2, y2, z2, ..]

  FreeLibrary(lib);

  JavaScriptSerializer serializer = new JavaScriptSerializer();
  serializer.MaxJsonLength = Int32.MaxValue;
  string serialized_points = serializer.Serialize(points);

  return View(new MyModel(serialized_points));
}

// Model
public class MyModel
{
  public string Points { get; private set; }
}

// View
@{
var m = Model;
var array_of_strings_points = m.Points;
}

// object from javascript
var js_obj = new js_obj();
var points_string = '@Html.Raw(@array_of_strings_points)';
js_obj.DrawPoints(points_string);

//js
//.. and here in DrawPoints() I parse the string of points and draw point
我的问题是:以这种方式将所有序列化点从控制器传递到javascript的字符串可以吗?是否有更好的方法将所有点传递给javascript

谢谢, 珍雅

我的问题是:是否可以将所有序列化的点从 控制器以这种方式访问javascript?也许有更好的方法通过 全部指向javascript

在您的模型上保留真实的CLR类型(
string[]
)。您不需要在控制器中序列化JSON:

public class MyModel
{
    public string[] Points { get; set; }
}
然后让控制器填充视图模型并将其传递给视图:

string[] points = ...
MyModel model = new MyModel();
mode.Points = points;
return View(model);
最后,在你看来:

@model MyModel
...

<script type="text/javascript">
    var js_obj = new js_obj();
    var points = @Html.Raw(Json.Encode(Model.Points));
    js_obj.DrawPoints(points);
</script>
我的问题是:是否可以将所有序列化的点从 控制器以这种方式访问javascript?也许有更好的方法通过 全部指向javascript

在您的模型上保留真实的CLR类型(
string[]
)。您不需要在控制器中序列化JSON:

public class MyModel
{
    public string[] Points { get; set; }
}
然后让控制器填充视图模型并将其传递给视图:

string[] points = ...
MyModel model = new MyModel();
mode.Points = points;
return View(model);
最后,在你看来:

@model MyModel
...

<script type="text/javascript">
    var js_obj = new js_obj();
    var points = @Html.Raw(Json.Encode(Model.Points));
    js_obj.DrawPoints(points);
</script>
我的问题是:是否可以将所有序列化的点从 控制器以这种方式访问javascript?也许有更好的方法通过 全部指向javascript

在您的模型上保留真实的CLR类型(
string[]
)。您不需要在控制器中序列化JSON:

public class MyModel
{
    public string[] Points { get; set; }
}
然后让控制器填充视图模型并将其传递给视图:

string[] points = ...
MyModel model = new MyModel();
mode.Points = points;
return View(model);
最后,在你看来:

@model MyModel
...

<script type="text/javascript">
    var js_obj = new js_obj();
    var points = @Html.Raw(Json.Encode(Model.Points));
    js_obj.DrawPoints(points);
</script>
我的问题是:是否可以将所有序列化的点从 控制器以这种方式访问javascript?也许有更好的方法通过 全部指向javascript

在您的模型上保留真实的CLR类型(
string[]
)。您不需要在控制器中序列化JSON:

public class MyModel
{
    public string[] Points { get; set; }
}
然后让控制器填充视图模型并将其传递给视图:

string[] points = ...
MyModel model = new MyModel();
mode.Points = points;
return View(model);
最后,在你看来:

@model MyModel
...

<script type="text/javascript">
    var js_obj = new js_obj();
    var points = @Html.Raw(Json.Encode(Model.Points));
    js_obj.DrawPoints(points);
</script>

谢谢你的回答!但是@Html.Raw需要字符串。。我无法在那里传递字符串数组。这就是我使用Serializer的原因。我在回答中犯了一个错误,忘记了在将模型属性传递给
Html.Raw
帮助程序之前对其进行
Json.Encode
编码。我用一个有效的例子更新了我的答案。谢谢你指出这一点。谢谢!成功了。我还有最后一个问题:在使用JSON.stringify(points)之后,如何解析DrawPoints()中的数组?var data_parsed=JSON.parse(i_点);已解析的数据[1];或者data_parsed.pop()不起作用。调用
DrawPoints
方法时,不需要执行
JSON.stringify
。在这种情况下,您不需要在方法中使用
JSON.parse
。该参数将直接表示您可以直接操作的javascript数组对象。谢谢您的回答!但是@Html.Raw需要字符串。。我无法在那里传递字符串数组。这就是我使用Serializer的原因。我在回答中犯了一个错误,忘记了在将模型属性传递给
Html.Raw
帮助程序之前对其进行
Json.Encode
编码。我用一个有效的例子更新了我的答案。谢谢你指出这一点。谢谢!成功了。我还有最后一个问题:在使用JSON.stringify(points)之后,如何解析DrawPoints()中的数组?var data_parsed=JSON.parse(i_点);已解析的数据[1];或者data_parsed.pop()不起作用。调用
DrawPoints
方法时,不需要执行
JSON.stringify
。在这种情况下,您不需要在方法中使用
JSON.parse
。该参数将直接表示您可以直接操作的javascript数组对象。谢谢您的回答!但是@Html.Raw需要字符串。。我无法在那里传递字符串数组。这就是我使用Serializer的原因。我在回答中犯了一个错误,忘记了在将模型属性传递给
Html.Raw
帮助程序之前对其进行
Json.Encode
编码。我用一个有效的例子更新了我的答案。谢谢你指出这一点。谢谢!成功了。我还有最后一个问题:在使用JSON.stringify(points)之后,如何解析DrawPoints()中的数组?var data_parsed=JSON.parse(i_点);已解析的数据[1];或者data_parsed.pop()不起作用。调用
DrawPoints
方法时,不需要执行
JSON.stringify
。在这种情况下,您不需要在方法中使用
JSON.parse
。该参数将直接表示您可以直接操作的javascript数组对象。谢谢您的回答!但是@Html.Raw需要字符串。。我无法在那里传递字符串数组。这就是我使用Serializer的原因。我在回答中犯了一个错误,忘记了在将模型属性传递给
Html.Raw
帮助程序之前对其进行
Json.Encode
编码。我用一个有效的例子更新了我的答案。谢谢你指出这一点。谢谢!成功了。我还有最后一个问题:在使用JSON.stringify(points)之后,如何解析DrawPoints()中的数组?var data_parsed=JSON.parse(i_点);已解析的数据[1];或者data_parsed.pop()不起作用。调用
DrawPoints
方法时,不需要执行
JSON.stringify
。在这种情况下,您不需要在方法中使用
JSON.parse
。该参数将直接表示可以直接操作的javascript数组对象。