2

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

这是我下面的代码

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

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

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

谢谢

4

3 回答 3

3

如果您想从控制器获取 ID,为什么不接受 Marko 提出的建议,而不是将其放入 id 属性中,而是将其放入您的 href 标记并传递 ID 属性。

默认情况下,MVC 中的路由需要返回一个 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 )

于 2013-06-06T21:28:43.510 回答
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点击事件:

$(document).ready(function() {

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

});

将为您提供一个弹出框,其中将显示单击的锚标记的 ID。

于 2013-06-06T21:08:50.367 回答
0

如果您希望获取正在循环的集合的索引,请尝试以下操作:

Model.getLeagues.indexOf(item)
于 2013-06-06T21:02:08.817 回答