Asp.net mvc 在mvc4应用程序中,使用类数组作为操作的输入,无法完全读取查询字符串数据

Asp.net mvc 在mvc4应用程序中,使用类数组作为操作的输入,无法完全读取查询字符串数据,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我制作了一个mvc4应用程序,我有一个输出png文件的控制器,如下所示: using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.IO; using System.Web.Mvc; using Foobar.Classes; namespace Foobar.Controllers { public

我制作了一个mvc4应用程序,我有一个输出png文件的控制器,如下所示:

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.IO;
using System.Web.Mvc;
using Foobar.Classes;

namespace Foobar.Controllers
{
  public class ImageController : Controller
  {
    public ActionResult Index(Label[] labels)
    {
      var bmp = new Bitmap(400, 300);
      var pen = new Pen(Color.Black);
      var font = new Font("arial", 20);

      var g = Graphics.FromImage(bmp);

      g.SmoothingMode = SmoothingMode.HighQuality;
      g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

      if (labels != null)
      {
        g.DrawString("" + labels.Length, font, pen.Brush, 20, 20);

        if (labels.Length > 0)
        {
          g.DrawString("" + labels[0].label, font, pen.Brush, 20, 40);
        }
      }

      var stream = new MemoryStream();
      bmp.Save(stream, ImageFormat.Png);

      stream.Position = 0;

      return File(stream, "image/png");
    }
  }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Foobar.Classes
{
  public class Label
  {
    public string label { get; set; }
    public int fontsize { get; set; }
  }
}
Label类如下所示:

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.Drawing.Text;
using System.IO;
using System.Web.Mvc;
using Foobar.Classes;

namespace Foobar.Controllers
{
  public class ImageController : Controller
  {
    public ActionResult Index(Label[] labels)
    {
      var bmp = new Bitmap(400, 300);
      var pen = new Pen(Color.Black);
      var font = new Font("arial", 20);

      var g = Graphics.FromImage(bmp);

      g.SmoothingMode = SmoothingMode.HighQuality;
      g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;

      if (labels != null)
      {
        g.DrawString("" + labels.Length, font, pen.Brush, 20, 20);

        if (labels.Length > 0)
        {
          g.DrawString("" + labels[0].label, font, pen.Brush, 20, 40);
        }
      }

      var stream = new MemoryStream();
      bmp.Save(stream, ImageFormat.Png);

      stream.Position = 0;

      return File(stream, "image/png");
    }
  }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Foobar.Classes
{
  public class Label
  {
    public string label { get; set; }
    public int fontsize { get; set; }
  }
}
当我在url中运行控制器时:

http://localhost:57775/image?labels[0][label]=Text+rad+1&labels[0][fontsize]=5&labels[1][fontsize]=5&labels[2][fontsize]=5
我得到了正确数量的标签,因此图像将显示3。 但是Label的实例将无法填充其数据成员。 我还尝试使用普通变量(而不是属性)来实现这一点

如果他们被填写,图像实际上会显示“3”和“文本1”

那么,我应该在类“Label”中添加什么来获得正确的属性呢?应该有某种注释吗


我在哪里读到这篇文章的?

我知道了,查询字符串是错误的,应该是这样的:

http://localhost:57775/image?labels[0].label=Text+rad+1&labels[0].fontsize=5&labels[1].fontsize=5&labels[2].fontsize=5