MVC在按钮点击时获取id

时间:2013-06-06 17:02:02

标签: asp.net-mvc button

我正在尝试获取所选按钮的ID。

这是我的代码

 <% foreach (var item in Model.getLeagues) { %>
        <a href=Teams.aspx class="leagueImage">
            <img src="../../<%: item.image %>" alt="<%: item.name %>" />
            </a>
    <% } %>

使用此代码,我生成5个按钮,然后我需要点击按钮的ID。

有关我如何获得此ID的任何帮助?

由于

3 个答案:

答案 0 :(得分:3)

如果你想从控制器获取ID,为什么不采用Marko的建议,而不是把它放入id属性,而是把它作为你的href标签的一部分并传递ID属性。

默认情况下,MVC中的路由要求返回一个ID,该ID是路径的一部分:

http://sitename/{Controller}/{Action}/{Id}

所以,你可以这样做(我将使用Razor语法,但你可以调整):

@for(var i = 0; i < Model.getLeagues.Count; i++) {
  Html.ActionLink("Button Name", "Index", "MyController", new { id = Model.getLeages[i] }, new { @class="classname", alt = "@Model.getLeagues[i].name" }) %>
}

而且,在您的控制器中(根据需要重命名),您将拥有:

public class MyController : Controller {
  public ActionResult Index(int id) {
    // Do stuff with the ID that you get back here.
  }
}

另外,您会注意到我发布了您的图片信息。相反,在样式表中创建一个类,如:

a.classname
{
    background: url(../Images/image.gif) no-repeat top left;
    /* Do whatever else you need to do here to style your buttons. */
}

我没有检查任何代码,因此无法保证它在语法上完美,但这应该让你走上正确的道路。

我注意到了你通往Teams.aspx的路径。如果您来自WebForms,则可以编辑路由文件以指向RESTful路由,如下所示:

routes.MapPageRoute("Teams", "MyController/Index", "~/WebForms/Index/Teams.aspx");

(感谢:https://stackoverflow.com/a/10175580/132528

答案 1 :(得分:2)

如果您将循环更改为以下内容:

<% for (var i = 0; i <= Model.getLeagues.Count; i++) { %>
    <a href="Teams.aspx" id="link_<%: i %>" class="leagueImage">
        <img src="../../<%: Model.getLeagues[i].image %>" alt="<%: Model.getLeagues[i].name %>" />
        </a>
<% } %>

现在您拥有具有唯一ID的锚标记(link_0,link_1,...)。所以现在使用jquery click事件:

$(document).ready(function() {

   $(".leagueImage").click(function() {
      alert($(this).id);
   });

});

会弹出一个弹出框,显示点击的锚标记的ID。

答案 2 :(得分:0)

如果您想要获取正在循环的集合的索引,请尝试以下方法:

Model.getLeagues.indexOf(item)