2

アイテムのリストを含むビューがあります。各アイテムにはテキストボックスとボタンがあります。コントローラ アクションでクリックされたボタンのアイテム ID を取得する最良の方法は何ですか? コントローラー アクションに関連するテキスト ボックスの値が必要なので、アクション リンクを使用できないと思います。

4

3 に答える 3

2

これを行うにはいくつかの方法があります。JavaScript を使用するものもあれば、使用しないものもあります。個人的には、デザイン自体が JavaScript ベース (ajax の使用など) でない限り、基本的な機能に JavaScript を使用しないことを好みます。

たとえば、各項目を独自の形式で、異なる送信値でラップすることができます。有効な HTML ではないため、フォームをネストしないように注意してください。

例えば:

@using(Html.BeginForm("MyAction", "MyController", new { id=1 })) {
    <input type="submit"/>
    @Html.TextBox("TheValue", "One")
}

@using(Html.BeginForm("MyAction", "MyController", new { id=2 })) {
    <input type="submit"/>
    @Html.TextBox("TheValue", "Two")
}

public ActionResult MyAction(int? id, string TheValue) {
     // if they click the first one, id is 1, TheValue = "One"
     // if they click the second one, id is 2, TheValue = "Two"
}
于 2013-10-06T22:03:53.853 に答える
0

最良のオプションは jquery を使用することですが、c# のみを使用する場合は、次のことをお勧めします。

テキストボックスを生成するためにある種の繰り返しステートメント(forまたはforeach)を使用していると思います。そのため、この新しいフォームにテキストボックスが含まれ、テキストボックスIDを渡すforeachアイテム内にフォームを作成しますフォーム送信。

この擬似コードのようなもの:

foreach(item in array){
  <form action="address/"@item.Id>
    <input type="text" value=""/>
    <input type="submit" value="submit textbox"/>
  </>
}
于 2013-10-06T21:39:16.643 に答える