我正在尝试获取所选按钮的ID。
这是我的代码
<% foreach (var item in Model.getLeagues) { %>
<a href=Teams.aspx class="leagueImage">
<img src="../../<%: item.image %>" alt="<%: item.name %>" />
</a>
<% } %>
使用此代码,我生成5个按钮,然后我需要点击按钮的ID。
有关我如何获得此ID的任何帮助?
由于
答案 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");
答案 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)