ASP.NET MVC 2: вызов jQuery Действие, обновление Просмотр? - PullRequest
2 голосов
/ 09 декабря 2010

Контроллер:

public ActionResult Index()
        {

            // not using the interface right now
            DealsRepository _repo = new DealsRepository();
            var deals = _repo.GetDeals("<Request><ZipCode>92618</ZipCode></Request>");

            return View(deals);
        }

        [HttpPost]
        public ActionResult Index(string data)
        {

            // not using the interface right now
            DealsRepository _repo = new DealsRepository();
            var deals = _repo.GetDeals(data);

            return View(deals);
        }

JQuery:

var url = '<%: Url.Action("Index", "Deal") %>';
var data = '<Request><ZipCode>92618</ZipCode></Request>';

$.post(url, data, function (result) {
    alert(result);
});

Я пытаюсь обновить (обновить) представление с обновленной моделью ... Я не хочу использовать jQuery для обновления содержимого. Пересмотрите представление с обновленной моделью.

Другими словами, как только пользователь вводит некоторые уточнения в свой поиск или выбирает фильтр, мне нужно позвонить и перезагрузить страницу с последними результатами поиска модели.

Ответы [ 4 ]

2 голосов
/ 09 декабря 2010

Вам вовсе не нужен javascript для публикации формы, что, как вам кажется, вы пытаетесь сделать.

Просто добавьте кнопку отправки в вашу HTML-форму.При нажатии кнопки отправки форма будет отправлена ​​на контроллер и действие, связанное с HTML-формой.Этот контроллер и действие вернут ActionResult, который будет вашим обновленным представлением, если вы так решите ...

По вашему мнению, вы можете сделать что-то вроде этого:

<%Html.BeginForm("ActionName", "ControllerName", FormMethod.Post); %>
<!-- more form fields here -->
<input type="submit" value="Go"/>
<%Html.EndForm(); %>
0 голосов
/ 09 декабря 2010

Иногда я просто перезагружаю страницу после нажатия кнопки подтверждения.

<script type="text/javascript">

    $("#SubmitButton").click(function () {
            window.location.reload(true); 
    }); 

</script>
0 голосов
/ 09 декабря 2010

Если вы просто собираетесь обновить страницу, то для вызова JS AJAX ОЧЕНЬ мало пользы, если только вы не ожидаете события по времени в диапазоне 1-30 секунд

Если это такдождитесь ответа и просто перезагрузите JS:

window.location.reload()

или

history.go(0)

(я рекомендую первое)

0 голосов
/ 09 декабря 2010

Представление должно иметь div или подобный объект с идентификатором (например, myDivId), тогда в вашем посте вам просто нужно сделать

$.post(url, data, function (result) {
     $('#myDivId').html(result);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...