私はプロジェクトに取り組んでおり、別の開発者がこのようなコードを持っています...
<script type="text/javascript">
function submitForm() {
document.forms[0].submit();
}
</script>
@foreach (var product in Model)
{
using (Html.BeginForm("SelectProduct", "Home", new {productId = product.Id}))
{
<tr>
<td>
<a href="#" id="submit_form" onclick="submitForm();">@product.Id</a>
</td>
<td>
@product.Name
</td>
</tr>
}
}
クリック可能な製品 ID と製品名を含む 2 列のテーブルを作成します。productId をクリックすると、ホーム コントローラーの SelectProduct アクションにポストされます。
[HttpPost]
public ActionResult SelectProduct(Guid productId)
{
...
}
これは POST であり、url\querystring で productId を送信しないため、これが気に入っています。(この例のコードを変更しました。これらの arnt 実際の productIds と id は、このデータを URL に含めないことを好みます)
しかし、私はこれが好きではないので...
- フォーム[0]を常に投稿するため、機能しません
- すべての製品のフォームを作成する方法が気に入らない
- 私が取り組んでいるjqueryモバイルリストビューを台無しにしています。フォーマットはすべて奇妙です。理由はよくわかりませんが、フォームのせいだと思います。
対照的に、アンカータグを含む次のリストビューがあり、それはうまくレンダリングされます。
<ul data-role="listview" data-inset="true" data-dividertheme="b">
<li><a href="@Url.Action("Index", "SomeControllerA")">Some Controller A</a> </li>
<li><a href="@Url.Action("Index", "SomeControllerB")">Some Controller B</a> </li>
<li><a href="@Url.Action("Index", "SomeControllerC")">Some Controller C</a> </li>
</ul>
だから私の質問は...
別の繰り返しフォームを使用せずに、同じ機能を持つ同様のテーブル/製品のリストを作成するにはどうすればよいですか (つまり、productID をクリックし、productId を渡すコントローラーアクションに POST しますが、クエリ文字列には渡しません)。
おそらく1つのフォームだけだと思っていましたが、どういうわけか適切なproductIDがコントローラーに渡されます。このようにして、 @foreach (モデルの変数製品)の外にHtml.BeginFormを持つことができます。
私は、Web フォームの LinkButton がグリッドで行っていたものと似たようなことをしようとしていると思います。私は ActionLinks が欲しいのですが、GET ではなく POST したいのです。
どんな助けにも感謝します。
ありがとう!