Asp.net mvc 模型绑定不';无法使用System.Drawing对象
我想将图片设置从页面传递到控制器。我通过JSON传递数据。我的JS对象如下所示:Asp.net mvc 模型绑定不';无法使用System.Drawing对象,asp.net-mvc,model-binding,Asp.net Mvc,Model Binding,我想将图片设置从页面传递到控制器。我通过JSON传递数据。我的JS对象如下所示: var fields = this.props.settings; var settings = { ID: fields.id, Title: fields.title, Size: { Width: fields.size.width, Height: fields.size.height
var fields = this.props.settings;
var settings = {
ID: fields.id,
Title: fields.title,
Size: {
Width: fields.size.width,
Height: fields.size.height
},
SizeType: fields.sizeType,
MimeType: {
ID: fields.id,
Title: fields.title,
Extension: fields.ext
}};
public class ConvertSettings : IListItem
{
public int? ID { get; set; } //OK
public string Title { get; set; } //OK
public System.Drawing.Size Size { get; set; } //NOK
public SizeType SizeType { get; set; } //OK
public MimeType MimeType { get; set; } //OK
}
我通过AJAX发送数据:
$.ajax({
url: url,
type: 'post',
data: JSON.stringify({ settings: settings }),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (message) {
self.refs.progress.onSuccess(message);
},
error: function (message) {
self.refs.progress.onFailed("Ups... something wrong :(");
}
});
我的控制器看起来像:
public ActionResult ConvertPictures(ConvertSettings settings)
我的模型如下所示:
var fields = this.props.settings;
var settings = {
ID: fields.id,
Title: fields.title,
Size: {
Width: fields.size.width,
Height: fields.size.height
},
SizeType: fields.sizeType,
MimeType: {
ID: fields.id,
Title: fields.title,
Extension: fields.ext
}};
public class ConvertSettings : IListItem
{
public int? ID { get; set; } //OK
public string Title { get; set; } //OK
public System.Drawing.Size Size { get; set; } //NOK
public SizeType SizeType { get; set; } //OK
public MimeType MimeType { get; set; } //OK
}
我对“大小”属性有问题。控制器接收“大小”属性
与:
我也尝试过矩形类,但也有同样的问题。我将JSON值解析为int:
Size: {
Width: 123,
Height: 33
}
但仍然在控制器中,模型具有{Height=0,Width=0}。其他属性(ID、枚举等)工作正常。我在应用程序中使用DefaultModelBinder。没有无参数构造函数,因此,DefaultModelBinder
无法初始化它并设置其值
例如,创建您自己的类来接收和绑定值(并且使用系统。无论如何,在mvc应用程序中绘制命名空间是不合适的)
public class ImageSize
{
public int Width { get; set; }
public int Height { get; set }
}
并更改ConvertSettings
以使用它
到