ASP.NET MVCは、Ajaxと従来のポストサポートの両方を備えています
-
22-09-2019 - |
質問
現在、いくつかのJavaScript機能を列挙してから、jQuery .ajax()を使用してMVCコントローラーアクションに投稿するフォームがあります。このフォームを投稿するための従来の(javaScriptなし)サポートを追加したい場合、自分のオプションについて質問がありません。
1)問題は、私がフィールドにないデータを持っているが、それはDivの単なるテキストであるということです。私は現在Ajaxで投稿しているので、投稿する前にIDでこれらのDIVのコンテンツを取得し、それらを投稿に含めることができます。この情報は従来の投稿から欠落していると思います。
1つのアイデアは、を作成することです <input>
これらのdivについてもページに非表示にします。そして、ポスト内のそれらを使用します。
2)Ajax Postのみを使用することにした場合、フォームを完全に取り除くことはできますか?
3)Ajaxの投稿にとどまることを考えると、値の投稿にどのような形式を使用することをお勧めしますか? JSON、COMMA Delimited(複雑なデータに問題がある)、他の何か?
4)通常、両方の方法をサポートしていますか?私が今私のフォームを見ると、彼らは大量のjQueryとjQuery UIの機能を使用し、これらはJavaScriptなしで実装する過剰なものになるからです。ユーザーがJSを有効にしない可能性があり、「JSが必要」と言っても大丈夫ですか?
この具体的なケースでは、私は(少なくともまだ)Web指向ではない内部のオンデマンドアプリケーションを構築しているので、JSが必要であると言うオプションがあります。
ty
解決
JavaScriptなしで実行可能なサイトを維持するルートにアクセスしたい場合は、サイトを作成しないサイトを作成することから始めて、JavaScriptを使用してJavaScriptを有効にして本当に必要なものにそのインターフェイスを変更することをお勧めします。これには、に含まれるすべての入力から始まることが必要です input
要素を使用して、JavaScriptを使用してそれらの要素を置き換えます div
要素 - または、より現実的には、削除します inputs
既存のことを示しています div
要素。
Ajaxを使用している場合でもフォームを取り除く必要はないと思いますが、技術的にはそれを持っている理由はありません。ただし、私がやりたいことの1つは、フォームを保持し、送信方法にアクションを引き出すことです。 form
JavaScriptで直接エンコードする必要がないようにタグを付けます。これにより、さまざまなフォーム間でJavaScriptを簡単に共有できるようになる場合があります。
フォームが通常と同じように、私は常にパラメーターを要求するようにシリアル化します。これを行う最も簡単な方法はjqueryのことです serialize
方法ですが、それは入力でのみ機能します。また、ハッシュ(オブジェクトにキー値ペア)を構築し、AJAXのデータパラメーターとして提供することもできます。パラメーターを要求するために自動的にシリアル化されます。他のものを使用するには、MVCのモデルバインディングコードではなく、独自のコードを使用して脱必要になる必要があります。
PublicFacing Webアプリの場合、JavaScript対応と障害のあるブラウザーの両方でインターフェイスを機能させ続けます。ただし、非JavaScriptブラウザは、特定の機能にアクセスできない場合があります。内部アプリの場合、あなた(またはあなたの会社の誰か)がそれをよりコントロールしているので、私はJavaScriptを必要とすることに満足しています。
他のヒント
Thomasのアドバイスをありがとう、カーソルの下のマウス座標を表示するためのコード:
ToolTip tt = new ToolTip();
tt.SetToolTip(pic, " ");
tt.ShowAlways = true;
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
tt.ToolTipTitle = e.X + " " + e.Y;
}
.