Ajax.BeginForm отличается поведение между MVC2 и MVC3? - PullRequest
0 голосов
/ 14 июня 2011

У меня есть фрагмент кода, работающий в MVC2, но после обновления до MVC3 он больше не работает.

На мой взгляд, у меня есть

<% using (Ajax.BeginForm("MyAction", new AjaxOptions { HttpMethod = "Post",
 OnComplete = "MyAction_OnComplete" })) { %>
my controls here...
<% } %>

<script type="text/javascript">
        function MyAction_OnComplete(content) {
                var output = eval(content.get_response().get_object());
        }
</script>

Мой метод действия возвращаетОбъект JSON:

[HttpPost]
public ActionResult MyAction(MyViewModel data) {
    // result = new myObject(); ....
    return new JsonResult { ContentEncoding = Encoding.UTF8, Data = result };
}

Я обновил ссылку JavaScript как

<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery-1.5.1.min.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.validate.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.validate.unobtrusive.js") %>"></script>
<script type="text/javascript" src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.js") %>"></script>

в web.config. Я включил ненавязчивый JavaScript

<appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

В MVC2 мойОбработчик события oncomplete на стороне клиента может интерпретировать JSON, возвращенный из действия, и выполнять дальнейшую работу, но эта строка кода в MVC3 обрывается, не имея возможности проанализировать данные.

Есть идеи, что не так с моим кодом?

Спасибо, Харди

1 Ответ

1 голос
/ 14 июня 2011

Я думаю, у вас та же проблема, что и здесь: http://forums.asp.net/t/1636706.aspx/1?MVC3+Bug+using+get_response+get_object+

Подводя итог: используйте вместо этого событие OnSuccess Ajax.BeginForm, и ваш параметр в обработчике событий уже будет объектом (вам не придется вызывать какие-либо методы развертывания get_response / get_object).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...