Asp.net mvc 3 我可以在MVC3的模型中包含视图吗

Asp.net mvc 3 我可以在MVC3的模型中包含视图吗,asp.net-mvc-3,Asp.net Mvc 3,我有一个模型,其中区域是谷歌地图覆盖(区域)细节,区域数据是用于在谷歌地图中渲染该区域的数据 public class AreaDetailsViewModel { public Area Area{get;set;} public AreaData Data{get;set;} } 现在的问题是,我试图使用ajax调用来同时检索视图和数据 但是如果我将整个数据作为json返回,我将无法获得视图;如果以html形式返回,我将把areadata包含到html中 因为我需要对视

我有一个模型,其中区域是谷歌地图覆盖(区域)细节,区域数据是用于在谷歌地图中渲染该区域的数据

public class AreaDetailsViewModel
{
     public Area Area{get;set;}
     public AreaData Data{get;set;}
}
现在的问题是,我试图使用ajax调用来同时检索视图和数据

但是如果我将整个数据作为json返回,我将无法获得视图;如果以html形式返回,我将把areadata包含到html中

因为我需要对视图进行本地化,所以我不能在没有本地化标签信息的情况下检索数据

那么我可以将视图包含到模型中吗

public class AreaDetailsViewModel
{
     public View AreaView{get;set;}
     public AreaData Data{get;set;}
}

但这似乎很奇怪,我真的需要你的建议。

MVC的工作方式是,你有一个视图(可以是HTML、部分HTML、JSON、XML等)和一个控制器操作,它填充一个模型(视图显示所需的所有数据),并将这个模型传递给视图


因此,在您的示例中,可以有一个控制器操作,该操作将使用AJAX调用进行查询,并将模型传递给一个局部视图,该视图将以所需的格式显示该数据。

MVC的工作方式是,您有一个视图(可以是HTML、局部HTML、JSON、XML等)和一个填充模型的控制器操作(视图显示所需的所有数据)并将此模型传递给视图



因此,在您的示例中,可以有一个控制器操作,该操作将使用AJAX调用进行查询,并将模型传递给一个局部视图,该视图将以所需的格式显示此数据。

为什么不能使用AJAX调用检索视图(带数据)?区域数据可以是多段线、矩形、圆形、多边形。要将其包含在html中,这是否太奇怪?我需要从html中检索数据,并将其呈现到google地图。这对我来说很奇怪,将其作为json对象处理是有意义的。@Jayantha忘了标记你:)我觉得没有什么不同(结果)在您的方法和使用ajax调用检索视图之间。@Jayantha我认为处理json对象比从html检索数据更容易。为什么不能使用ajax调用检索视图(使用数据)?AreaData可以是多段线、矩形、圆形和多边形。将其包含在html中,是否太奇怪了?我需要从html中检索数据,并将其呈现到google地图。这对我来说很奇怪,将其作为json对象处理是有意义的。@Jayantha忘记标记您:)我感觉您的方法和使用ajax调用检索视图之间没有什么不同(结果)。@Jayantha我认为处理json对象比从html检索数据更容易。是的,问题是我想结合部分HTML和JSON,我必须返回指定的数据类型,如果我返回部分视图,谷歌地图覆盖数据也必须存储在HTML中;如果返回JSON(字符串),我必须获取视图并将其放入模型中,如我的第二个示例。我错过了什么吗?你不应该同时返回HTML和JSON。如果你返回一个局部视图,你的模型就在这个局部视图中,这样你就可以更新一些隐藏的字段或者一些可以用来在你的AJAX成功回调中检索所需值的东西。是的,但是额外的数据被用来渲染google map overlay。目前,我向服务器打了2个AJAX调用,一个是检索html,另一个是检索json数据。它可以工作,但感觉不是一种优雅的方式。您可以使用
标记将这些额外数据作为JSON形式嵌入HTML中:
var model=@HTML.Raw(JSON.Encode(model))。现在,您可以在成功回调中使用
model
变量。它将包含传递给此分部的整个模型。它可以工作!我在视图中应用了一个隐藏的输入,并在ajax调用后检索它,将json sring转换为object。谢谢你的帮助!是的,问题是我想结合部分HTML和JSON,我必须返回指定的数据类型,如果我返回部分视图,谷歌地图覆盖数据也必须存储在HTML中;如果返回JSON(字符串),我必须获取视图并将其放入模型中,如我的第二个示例。我错过了什么吗?你不应该同时返回HTML和JSON。如果你返回一个局部视图,你的模型就在这个局部视图中,这样你就可以更新一些隐藏的字段或者一些可以用来在你的AJAX成功回调中检索所需值的东西。是的,但是额外的数据被用来渲染google map overlay。目前,我向服务器打了2个AJAX调用,一个是检索html,另一个是检索json数据。它可以工作,但感觉不是一种优雅的方式。您可以使用
标记将这些额外数据作为JSON形式嵌入HTML中:
var model=@HTML.Raw(JSON.Encode(model))。现在,您可以在成功回调中使用
model
变量。它将包含传递给此分部的整个模型。它可以工作!我在视图中应用了一个隐藏的输入,并在ajax调用后检索它,将json sring转换为object。谢谢你的帮助!