将System.Drawing.Point传递给MVC控制器

3

我想向我的控制器传递两个System.Drawing.Point结构体。虽然可以创建普通对象来简单地获取位置,但我很好奇是否可以使用内置的结构体来完成相同的任务。

我尝试使用以下签名,但无法触发任何断点:

public async Task<ActionResult> DoSomething(Point pt1, Point pt2)

并且

public async Task<ActionResult> DoSomething(Point pt)

我在这个标记处设置了断点,

public async Task<ActionResult> DoSomething(Point[] pts)

使用此请求:
$.ajax({
            type: 'GET',
            url: 'http://localhost:37260/TestController/DoSomething',
            dataType: 'application/json',
            success: function (myData) { },
            data: [{X: 5, Y: 6}, {X: 7, Y: 9}],
            async: false
        });

但是得分为零。我也尝试了很多其他的方法。 我正在使用jQuery和JSON,但这不是必需的。此外,可以是POST或GET请求。

1个回答

1

使用DoSomething(int x, int y)代替DoSomething(Point pt),这里的Point是.net系统对象,因此使用int参数,在该块中定义新的Point(x, y)对象。


谢谢您的建议,但我正在尝试找出是否可以(或不可能)将内置的.NET结构System.Drawing.Point传递给MVC控制器,因为我找不到任何使用它的示例。 - Furkan Omay
可以实现,但是你不能从jQuery中调用动作,因为jQuery无法理解.NET系统对象。如果你直接调用动作而不使用jQuery,则可以实现。 - Raju Padhara
否则请创建您自己的类。 - Raju Padhara
`Public class iPoint { public int x {get; set;} public int y {get; set;} }public async Task<ActionResult> DoSomething(iPoint pt) { Point obj = new Point(pt.x, pt.y); // use obj }` - Raju Padhara
再次感谢您的建议。这就是我在问题中加入“虽然可以创建普通对象来简单获取位置”的原因。 - Furkan Omay

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接