问题
I am loving ASP.NET MVC, keeping up with the releases/docs can sometimes be tricky, so maybe I'm just not getting something... I want to use a TextBoxFor(), and working with LabelFor() etc. is fine, all the magic happens for me.
But if I create...
<%=Html.TextBoxFor(x => x.LastName) %>
And wanted to do something nice with jQuery, how would I get the ID of the control that was created? I could add a CSS class and use that to attach my jQuery, but for something I am doing I would like the ID... so I could do something like:
$('#LastName').(...)
I know I could work it out in this case, and hack it in manually, but is there a neater way?
回答1:
Since MVC4 there is a built-in way to do it - @Html.IdFor().
Here is a sample of using it:
@Html.IdFor(m => m.Filters.Occurred.From)
and the result is like
Filters_Occurred_From
回答2:
I think you can do something like:
<%=Html.TextBoxFor(x => x.LastName, new { id = "LastName" })%>
Overloads of TextBoxFor
回答3:
As a point of interest it appears that the Html.Textbox() code will generate an id, duplicating the control name for anything that begins with a letter (a-z). If however your 'name' begins with a number it will simply not bother.
This is a fantastic 'feature' that has caused me grief for the past hour or so.
回答4:
By default your control id is your model binding value, You can also Just use firebug. select the control and get by default control id.
来源:https://stackoverflow.com/questions/2510076/reference-a-controls-id-created-with-textboxfor