当前位置: 首页 > 面试题库 >

ASP.NET MVC是否可以将具有动态类型参数的参数的JSON对象传递给控制器​​?

赵超
2023-03-14
问题内容

我的JavaScript中有代码,可以使用ajax发布数据:

$.ajax({
                url: '/Configurations/GetSelectedPageTranslation',
                type: 'POST',
                data: { inttype: $("#some").val(), objectType:{prop1: 'adsfa', prop2: 'asdf'}},
                success: function (result) {

                },
                error: function () {
                    alert('error');
                }
            });

在控制器中,我有一个带有签名的方法:

public JsonResult GetSelectedPageTranslation(int inttype, dynamic objectType)

我可以正确地拥有inttype。但是objectType不会为null,但是如果我确实喜欢objectType.prop1,它将抛出错误。如果我将用JSON.stringify
JavaScript中的对象类型,则控制器中的objectType将具有字符串值。

是否可以使用像这样的动态数据类型直接在控制器中访问JSON数据:objectType.prop1?

谢谢


问题答案:

dynamicMVC3 中没有对动作参数的开箱即用支持。

但是,MVC非常可扩展,因此您可以添加此功能。您需要做的是创建一个自定义IModelBinder,您可以在其中执行JSON反序列化并建立一个动态对象。

幸运的是,本文:使MVC 3更加……动态正在处理完全相同的问题,因此您还可以在此处找到示例代码和其他链接,这些内容应该可以帮助您入门。



 类似资料:
  • 问题内容: 我有以下任意JSON对象(字段名称可能会更改)。 -- 我知道我可以像定义具有相同字段名的JSON对象那样定义类,但是我希望控制器接受具有不同字段名的任意JSON对象。 问题答案: 如果您想将自定义JSON对象传递给MVC操作,则可以使用此解决方案,它的工作原理很吸引人。 该解决方案的真正好处是,您不需要为每个参数组合定义一个新类,并且除此之外,您可以轻松地将对象转换为其原始类型。 更

  • 问题内容: 与在或中使用的方式类似: 问题答案: 是。 如果你不理会关键字参数,这很简单并且可以工作: 如你所见,Python将为你提供一个包含所有参数的元组。 对于关键字参数,你需要将其作为单独的实际参数接受,如的所示。

  • 问题内容: 我正在使用.Net 4,MVC 3和jQuery v1.5做一些工作 我有一个JSON对象,它可以根据调用它的页面而改变。我想将对象传递给控制器​​。 我了解如果我创建一个自定义模型,例如 并在我的控制器中使用它,例如 并使用jQuery的.ajax方法传递对象,如下所示: 这工作正常,我的JSON对象已映射到我的C#对象。我想做的是通过一个可能更改的JSON对象。当它更改时,我不需要

  • 我有一个抽象基类,它有以下私有变量 我希望其他所有扩展基类的类都实现以下方法 我的问题是,除了Map之外,我不能为实现选择任何其他类型 如果我不能控制选项映射的类型,但我想让initOptions方法的实现类知道映射中的键是String类型,值可以是任何对象,那么处理这种情况的正确方法是什么。

  • 让我们假设下面的方法(从番石榴的Iterables说): 这个系列: 然后编译以下代码并正确导出泛型 (在Guava中,这将返回< code>objs中所有字符串的iterable。) 但是现在让我们假设以下类: 我不知道如何调用并获取

  • 我有一个testng测试方法和一个数据提供者。我想让测试用例对具有要测试的此功能的多个客户端可重用。唯一的问题是该功能在不同的客户端上的工作方式不同,即我必须为不同的客户端提供不同数量的相同功能的输入,并且最终结果对所有人来说都是相同的。 目前,我正在通过为具有此功能的多个客户端使用数据提供程序定义多个测试方法来执行此操作。 示例:- 我开发了一个通用的测试逻辑来处理不同的参数集。我无法做的是对不