0

ビューでViewUserControl(.ascxファイル)をレンダリングしています:

<% Html.RenderPartial("Comments", Model.Comments); %>

このViewUserControlは、エントリに関連付けられたコメントを表示します。このコントロールでフォームもレンダリングして、アプリケーションのユーザーが貢献できるようにしたいと思います。

ViewUserControlにフォームを追加し、そのポストバックをどのように処理しますか?

4

3 に答える 3

1

他のページと同じように、そこにフォームを追加するだけです。MVCでは、フォーム自体はポストバックされません。フォームは、HTTP Postを介して自分自身とそのコンテンツ(入力コントロール)をURLに送信するだけです。

コントローラーでアクション(したがってURL)を作成するだけで、フォームが投稿し、そこで必要なアクティビティを実行します...

于 2009-11-03T11:54:15.793 に答える
1

標準のasp.netのように、ポストアバックはありません。データを特定のURL(コントローラー/アクション)に投稿するフォームタグのみが存在できます。
部分的なユーザーコントロール内に、次のように記述します。

<form action="controller/actionname" method="post">
<input type="text" name="inputText" />
<input type="submit" value="Post data to server" />
</form>

MVCでは、入力type="submit"のみがフォームの送信をトリガーします。標準のASP.NETWebフォームでは、多くのLinkbuttons、Buttonsなどを使用できますが、これらはすべて、javascriptイベントを介してinput type="submit"をクリックするだけでトリガーされます。1つのフォームは1つのURL(コントローラー/アクション)にのみデータを投稿できますが、それはjavascriptで変更できます(「古い」asp.net Webフォームのhtmlソースで確認できます)。

次に、コントローラーで投稿データを処理できます。

[AcceptVerb(HttpVerb.Post)] // optionally 
public ActionResult ActionName(string inputText) ...
于 2009-11-03T11:56:11.570 に答える
0

他の人がすでに回答しているように、フォームをレンダリングし、その送信をActionResultで処理するだけです。

たとえば、フォーム(サイトのどこにでもレンダリングできる)がhttp://www.yoururl.com/home/saveに送信する場合、送信を処理するためにホームコントローラーにsaveという名前のActionResultメソッドを作成します(おそらくpost/getメソッド)。

于 2009-11-03T22:50:19.747 に答える