ASP.Net将数组从控制器传递到视图到javascript
我有ASP.NETMVC3应用程序。我的任务是从文件中读取点并显示它们。对于从文件中读取点,我使用DLL。我用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];
// 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数组对象。