将复杂的JS对象传递给服务器端模型的最佳实践

时间:2017-04-02 13:05:46

标签: javascript asp.net-mvc model asp.net-mvc-5

我正在使用ASP.NET MVC5而且我不知道处理这类情况的最佳做法是什么:

让我们想象一个带有地图的网页。当用户单击按钮时,地图的边界将发送到服务器端操作

public ActionResult MyAction(MapBoundsModel model)
{
    //some stuff
}

此处,MapBoundsModel是一个包含地图边界的对象,但是使用Javascript构建

所以这就是我所做的:

//Create a JS object which is similar to my server-side model
var myObject = new Object();
myObject.Center = myMap.getCenter();
//and all the opther properties of the server-side object

//Call my server-side action with an Ajax call
$.ajax({
    url: '@Url.Action("MyAction", "MyController")',
    type: 'POST',
    dataType: "json",
    contentType: 'application/json',
    data: JSON.stringify({ mapBoundsModel : myObject})
})

我的服务器端控制器看起来像那样

public ActionResult MyAction(MapBoundsModel mapBoundsModel)
{
    //doWork
}

这有效,但对我来说似乎很难看,因为如果我通过添加或删除属性来更改我的MapBoundsModel,JS对象将没有new / removed属性,这将在运行时产生意外结果(VS会让我编译它)

我想人们可以通过大量隐藏的字段进入强类型视图,但对我来说这看起来并不干净。

那么,有没有最好的做法来传递"副本"来自JS的复杂服务器端模型? 我打开一个暗示任何VS插件存在的解决方案

0 个答案:

没有答案