3

NET MVCは、javascriptを使用して確認した後、ポストバックを試みます。これはボタンです。

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

これは、CheckRemove()js関数のJavaScriptです。

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ビットでオブジェクトの予期されるエラーが発生します。IDを明確に設定しました。button1もデバッグで入力されます。button1.idとbutton1も__doPostBack呼び出しに渡してみましたが、ポストバックせず、オブジェクトが期待されていると言い続けます、何かアイデアはありますか?

4

3 に答える 3

4

WebフォームのようにMVCにポストバックの概念はありません。nameoftheform.submit();代わりに使用してください。

http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml

以下を使用して、フォームタグにIDを生成できます。

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

スクリプトで使用するもの:

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

個人的に私はjQueryのファンなので、最後の1つは次のように書き直すことができます。

$('#myForm').submit();
于 2010-07-23T10:04:09.710 に答える
0

このようにjquerysubmitを実行してみてください

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

それは私と一緒に働いた

于 2010-07-23T10:05:55.073 に答える
0

Jquery送信機能を使用します。

良い例がここ にあります:return:false;を実行することを忘れないでください。それ以外の場合、フォームは2回投稿されます。1回はjqueryから、もう1回はフォームのボタン呼び出しからです。

もう1つの優れた機能は、MVCアクション(コントローラー内)でモデルを使用すると、モデルをキャッチできることです。モデルをテキストフィールドなどにバインドすると、モデルが更新されるため、フォームコレクションを解析する必要はありません。

私のプロジェクトからいくつかのコードを入手しました。

dbに保存されているページオブジェクトがあります。

ビューを作成するとき、強く型付けされた->ページオブジェクトを選択します。これにより、次のようになります。

<%@ 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 });
    }

テキストフィールドに入力したものはすべて、コントローラーで取得して保存したモデルにバインドされます

于 2010-07-23T10:53:05.723 に答える