Jak serializować funkcję na json (używając Razor @ <text>)
Jak mogę serializować funkcję klienta do obiektu json? (podobnie jak kontroluje działanie kendo)
Oto, co mam do tej pory ...
Widok:
@Html.TestControl(@<text>function(){ alert("test"); }</text>)
Pomocnik kontroli:
public static HtmlString TestControl<TModel>(this HtmlHelper<TModel> helper, Func<object, object> onSubmit)
{
var obj = new {onSubmit = onSubmit.Invoke(null) };
var jsonObj = new JavaScriptSerializer().Serialize(obj);
return new HtmlString(string.Format("<script>var obj = {0};</script>", jsonObj));
}
Wydajność:
<script>var obj = {"onSubmit":{}};</script>
Pożądane wyjście:
<script>var obj = {"onSubmit": function(){ alert("test"); }};</script>
Widzę, że wartość obj.onSubmit w pomocniku jest funkcją ... ale jak mogę uzyskać funkcję serializacji i pojawienia się w obiekcie json (jako funkcja)?
AKTUALIZACJA:
Preferowane jest użycie @ <tekst> do zdefiniowania funkcji anonimowej. Używamy formantów Kendo z tą składnią, a celem jest zachowanie spójności kodu.
Oto przykład składni kontrolek kendo:http://docs.kendoui.com/api/wrappers/aspnet-mvc/Kendo.Mvc.UI.Fluent/UploadEventBuilder