Просмотр главной страницы и PostBack - PullRequest
2 голосов
/ 20 января 2010

У меня есть раскрывающийся список на главной странице, который необходимо изменить после изменения. После обратной передачи любая страница, инициировавшая обратную передачу, должна быть повторно отображена.

Мой вопрос: где мне с этим справиться? Очевидно, что я не хочу изменять каждое действие в моем проекте ... Я думаю, возможно, нужно выполнить обратную передачу к другому фиксированному действию и перенаправить это действие обратно на страницу, которая является реферером. Я прав? Есть мысли?

Спасибо.

Jason

Ответы [ 3 ]

1 голос
/ 27 января 2010

В Site.Master я закончил оборачивать выпадающий список своей собственной формой, которая отправлялась обратно на выделенный контроллер / действие.

<% Using Html.BeginForm("ChangeRole", "Home")%>
   <div id="roleSelector">Change Role: <%=Html.DropDownList("Role", DirectCast(ViewData.Item("Roles"), SelectList), New With {.onchange = "this.form.submit();"})%></div>
<% End Using%>

В контроллере я использовал следующий код для изменения режима, а затем перенаправил обратно на ссылающийся URL.

<AcceptVerbs(HttpVerbs.Post)> _
Public Function ChangeRole() As ActionResult
    Me.CurrentUser.SetRole(DirectCast([Enum].Parse(GetType(Models.ApplicationRoles), Me.Request.Item("Role")), Models.ApplicationRoles))
    Return Redirect(Request.UrlReferrer.ToString())
End Function

Я не уверен, что это рекомендуемый способ, но я не смог придумать другое решение.

0 голосов
/ 20 января 2010

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

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

Например, что-то вроде этого:

$(document).ready(function()
{
   $("#myRadioButton").change(function()
    {
       //Post to your action method, with the value of the radio button, function to call on success
        $.post('yourActionMethodUrl', $(this).val(), function()
        {
           //Update some part of the page
        });
    });
});

Это основано на памяти, поэтому вам может потребоваться проверить синтаксис.

0 голосов
/ 20 января 2010

Когда вы отправляете обратно из выпадающего списка, что вы делаете?Можете ли вы справиться с этим в вызове jQuery, что исключает необходимость повторного отображения страницы?

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