Javascript onclick _dopostback в MVC не отправлять обратно - PullRequest
3 голосов
/ 23 июля 2010

NET MVC, чтобы попытаться отправить обратно после подтверждения с помощью JavaScript, это кнопка:

<input type="submit" id ="RemoveStatus" value="Remove Status" name="button" onclick="return CheckRemove();"/>

Это мой javascript в моей функции CheckRemove () js:

var button1 = document.getElementById("RemoveStatus");

     if (confirm("Are you sure you want to remove status?") == true) 
                {
                    button1.disabled = true;
                    button1.value = "Removing status...";
                    __doPostBack('RemoveStatus', '');
                    return true;


                }
                else 
                {
                    return false;
                }

Но по какой-то причине я получаю ожидаемую ошибку объекта в бите __doPostBack, я четко установил идентификатор, button1 тоже заполняется при отладке, я попытался передать button1.id и button1 в вызов __doPostBack, но не будет обратной передачи и продолжает говорить, что объект ожидается, какие-нибудь идеи?

Ответы [ 3 ]

4 голосов
/ 23 июля 2010

У вас нет такой концепции постбэков в MVC, как в веб-формах. Просто используйте nameoftheform.submit(); вместо.

http://www.javascript -coder.com / JavaScript-форма / JavaScript форм-submit.phtml

Вы можете использовать следующее для генерации идентификатора в теге формы:

<% using (Html.BeginForm("Create", "Test", FormMethod.Post, new {id="myForm"})) {%>

и в скрипте используйте:

document.getElementById('myForm').submit();

Лично я фанат jQuery, поэтому последний можно переписать так:

$('#myForm').submit();
0 голосов
/ 23 июля 2010

Использование Jquery submit function.

Хороший пример можно найти here Не забудьте сделать: return: false;в противном случае форма будет публиковаться дважды: один раз из jquery и один раз из вызова кнопки в форме.

Еще одна приятная особенность заключается в том, что в вашем действии MVC (в вашем контроллере) вы можете поймать вашу модель, если выиспользовать один.Если вы привязываете свою модель к своим текстовым полям и т. Д., Вы получаете обновленную модель, поэтому вам не нужно анализировать вашу коллекцию форм.

Я получил некоторый код из моего проекта.

IУ меня есть объект страницы, который хранится в БД.

Когда я создаю свое представление, я выбираю строго типизированный -> объект страницы, который дает мне:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<LIB.Data.Page>" %>

Я привязываю свою модель к текстовым полям:

<legend>Fields</legend>
<div class="editor-field">
    <%=Html.TextBoxFor(model => model.Title)%>
</div>

в моем контроллере я делаю это:

[HttpPost]
    [ValidateInput(false)]
    public ActionResult Create(Page model, FormCollection collection)
    {
        PageService.AddPage((string)Session["lang"], model);
        return RedirectToAction("Index", new { menuGuid = model.MenuGuid });
    }

все, что я помещаю в текстовые поля, привязано к модели, которую я получаю в контроллере и сохраняю

0 голосов
/ 23 июля 2010

попробуйте сделать JQuery представить как это

$("#RemoveStatus").submit();

это работало со мной

...