我想知道是否可以将 lambda 表达式从视图传递回控制器,例如我有一个模型:
public class ExpressionModel<T>
{
public Expression<Func<T, string>> Expression { get; set; }
}
将模型传递给视图的控制器看起来像这样:
public ViewResult Index()
{
var expressionModel = new ExpressionModel<SomeClass>();
expressionModel.Expression = r => r.SomeStringProperty;
return View(expressionModel);
}
现在视图有一个模型:
@model ExpressionModel
现在使用 Ajax 我想将模型传回控制器
var model = @Html.Raw(Json.Encode(Model));
$.ajax({ url: "@someControllerUrl",
type: 'POST',
data: JSON.stringify(model),
contentType: 'application/json; charset=utf-8',
success: function (data) {
alert(data.success);
},
error: function () {
alert("error");
}
});
从视图中获取表达式模型的控制器方法看起来像这样
[HttpPost]
public ViewResult Index(ExpressionModel expressionModel)
{
return View();
}
这甚至可以使用ajax吗?或者您只能回发标准类型,如 int、string、bool(或它们在列表或另一个类中的任何组合)?如果不可能,那么我可以以某种方式将字符串转换为 lambda 表达式吗?