ビューからコントローラーにラムダ式を渡すことが可能かどうか疑問に思います。たとえば、モデルがあります。
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 (またはリスト内または別のクラス内のそれらの任意の組み合わせ) などの標準型のみをポストバックできますか? それが不可能な場合は、何らかの方法で文字列をラムダ式にキャストできますか?