C# MVC表单上的多个按钮-在操作控制器中获取项目id

C# MVC表单上的多个按钮-在操作控制器中获取项目id,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个项目列表视图。每个项目都有一个文本框和一个按钮。 获取控制器操作中单击的按钮的项目id的最佳方法是什么? 我需要控制器操作中关联文本框中的值,因此我认为我不能使用操作链接。此答案使用jquery-如果您不知道如何将jquery添加到视图中,或者只是不想使用它,请告诉我,我可以重新计算答案 我会这样做 <li> <input type="text" id="1" name="1" class="whatever" /> <input type="b

我有一个项目列表视图。每个项目都有一个文本框和一个按钮。 获取控制器操作中单击的按钮的项目id的最佳方法是什么?
我需要控制器操作中关联文本框中的值,因此我认为我不能使用操作链接。

此答案使用jquery-如果您不知道如何将jquery添加到视图中,或者只是不想使用它,请告诉我,我可以重新计算答案

我会这样做

<li>
   <input type="text" id="1" name="1" class="whatever" />
   <input type="button" value="CliCk mE" class="myButton" />
</li>
<li>
   <input type="text" id="2" name="2" class="whatever" />
   <input type="button" value="CliCk mE" class="myButton" />
</li>
<input type="hidden" id="myHiddenText" name="myHiddenText" />

最好的选择是使用jquery,但如果您只想使用c,我建议如下:

我设想您正在使用某种重复语句(for或foreach)来生成文本框,因此我要做的是在其中创建一个表单,foreach这个新表单将包含您的文本框,并且foreach项将把文本框id传递给表单submit

类似于以下伪代码:

foreach(item in array){
  <form action="address/"@item.Id>
    <input type="text" value=""/>
    <input type="submit" value="submit textbox"/>
  </>
}
foreach(数组中的项){
}

有很多方法可以做到这一点。有些人使用javascript,有些人不使用。我个人不喜欢使用javascript实现基本功能,除非您的设计本身就是基于javascript的(例如使用ajax)

例如,您可以将每个项目包装在自己的表单中,并使用不同的提交值。注意不要嵌套表单,因为这不是有效的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"
}
@使用(Html.BeginForm(“MyAction”,“MyController”,new{id=1})){
@文本框(“TheValue”,“One”)
}
@使用(Html.BeginForm(“MyAction”,“MyController”,new{id=2})){
@文本框(“TheValue”,“Two”)
}
公共操作结果MyAction(int?id,字符串值){
//如果他们单击第一个,id为1,value=“一”
//如果他们单击第二个,id为2,value=“2”
}

您熟悉javascript或jQuery吗?-这个答案可以用jQuery来回答吗?你需要文本框的值是什么意思?你需要它在哪里?请把你的HTML@ScottSelby-他的意思是他需要提交表格,这就是为什么他说他不认为他可以使用动作链接。他一直在这样做,但没能让它工作。我的代码:以及脚本和脚本$(document).ready(函数(){$('.myButton')。单击(函数(){alert(“此处”);var textValue=$(this).closest(输入[type='text']).val();alert(textValue);//这将使用所需文本框$('#CurrentId').val(textValue);})中的值设置隐藏字段;我从第一个警报中得到“此处”,但从下一个警报中未定义:(
foreach(item in array){
  <form action="address/"@item.Id>
    <input type="text" value=""/>
    <input type="submit" value="submit textbox"/>
  </>
}
@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"
}