MVC2:アクションリンクの制御値を読み取るにはどうすればよいですか?
-
19-09-2019 - |
質問
いくつかのモデル情報をActionLinkに渡しますが、ページ上のいくつかの入力の値をアクションに提供したいと思います。たとえば、私がこのようなものを持っていた場合:
<input Name="MyInput" />
<%: Html.ActionLink("MyAction", "MyController", Model.Value);
アクションに、Model.Value(パラメーター経由で渡されます)とmyInputの値の両方に注意してください。通常、フォームコレクションを使用しますが、提出していないため、この場合はできません。
では、どうすればmyinputの価値をmyactionに渡すことができますか? MyInputという名前のプロパティを自分のモデルに追加する必要がありますか?それが機能すると仮定すると、より簡単な方法がありますか、それともモデルの変更を伴わない少なくとも1つはありますか?
解決
HTMLでこれを行う方法はないため、ASP.NET MVCでこれを行う方法はありません。
これには、次の2つの解決策があります。
JavaScriptを使用して、ユーザーがテキストボックスを編集するときに、アンカータグの値を動的に変更してタイプしたものを含めます。これにはASP.NETルーティングを使用できません。サーバーで実行され、クライアントサイドコードが必要です。
リンクの代わりにフォーム送信を行います。これがHTMLで推奨される方法です。ユーザーがデータを送信している場合、フォームにある必要があります。すべてをフォームタグで包み、そこにテキストボックスとボタンを配置します。フォームのアクションを、投稿したいURLに設定します。
これは私が入れたのと同じ応答です この質問, 、他の質問の尋ね手はわずかに異なる考えを持っていたかもしれませんが。
他のヒント
おそらく、JavaScriptを介してテキストボックスの値を読み取ることができたと判断しました(おそらくJQueryを使用したでしょう)、匿名タイプの一部としてパラメーターとして渡しました(Model.Valueを使用するだけではありません)。ただし、アクションリンクの使用からフォームの送信を実行してフォームコレクションを使用することに切り替えることにしました。私が構築していたページでより理にかなっています。