2010-03-24 4 views
7

Ich bin liebevolle ASP.NET MVC, mit den Releases/Docs Schritt halten kann manchmal schwierig sein, also vielleicht ich gerade nicht etwas bekomme ... Ich möchte verwenden ein TextBoxFor(), und die Arbeit mit LabelFor() usw. ist in Ordnung, all die Magie passiert für mich.Verweis auf die ID eines Controls erstellt mit TextBoxFor()

Aber wenn ich schaffen ...

<%=Html.TextBoxFor(x => x.LastName) %> 

und wollte etwas Schönes mit jQuery tun, wie würde ich die ID der Kontrolle zu bekommen, die erstellt wurde? Ich konnte eine CSS-Klasse hinzufügen, und dass meine jQuery befestigen verwenden, aber für etwas, was ich tue, ich würde die ID mag ... so konnte ich etwas tun:

$('#LastName').(...) 

Ich weiß, ich könnte es funktionieren in diesen Fall, und hack es manuell ein, aber gibt es einen besseren Weg?

+1

funktioniert das nicht? Wenn ich es versuche, scheint es, die ID zu generieren, wie ich es erwarten würde, dass es benannt wird. Wenn Sie die HTML-Quelle auf der Seite anzeigen, was gibt Ihre 'TextBoxFor()' aus? – Amadiere

+0

Das funktioniert und generiert die ID, die Sie erwarten würden, aber ich denke, wenn das Framework es für ein Textfeld ausarbeiten könnte, wäre es in der Lage, es an anderen Orten auszuarbeiten ... Besonders nützlich, wenn die ID generiert wird zu einem Array, so dass Sie mit einer ID wie "Websites_0__Url" enden. Der manuelle Weg funktioniert, ich denke nur MVC muss das für mich wissen und rettet mich Fehler machen;) –

Antwort

7

Seit MVC4 gibt es eine eingebaute Möglichkeit, es zu tun - @Html.IdFor().

Here is a sample es verwenden:

@Html.IdFor(m => m.Filters.Occurred.From) 

und das Ergebnis ist wie

Filters_Occurred_From 
12

denke ich, Sie so etwas wie zu tun:

<%=Html.TextBoxFor(x => x.LastName, new { id = "LastName" })%> 

Overloads of TextBoxFor

+0

Dies würde in den meisten Fällen funktionieren, und ich denke, ich hatte die Verbindung zwischen ID und Name zu fest in meinem Kopf, natürlich könnte ich modifiziere es! Ich denke, es würde Probleme haben, wenn es ein Array war, für das MVC die Kontroll-IDs ausgearbeitet hat und Sie am Ende usw. –

+0

Eine andere Möglichkeit ist, MvcContrib zu verwenden führt die IdFor-Methode ein, mit der Sie <% = this.IdFor (x => x.LastName)%> machen können, was magisch ist! –

+0

Anstatt die Feldbezeichner manuell zu generieren, würde ich Colins Ansatz empfehlen, oder wenn Sie nicht auf MVCContrib angewiesen sein möchten, dann http://StackOverflow.com/Questions/3065307/client-Id-For-Property-asp-net-mvc – JCallico

0

Als Punkt von Interesse scheint es, dass die Html.TextBox() Code wird eine ID erzeugen, für alles, was die Steuer Namen duplizieren Das beginnt mit einem Buchstaben (az). Wenn jedoch Ihr 'Name' mit einer Nummer beginnt, wird es einfach nicht stören.

Dies ist ein fantastisches "Feature", das mich für die letzte Stunde oder so Leid verursacht hat.

-1

Standardmäßig ist Ihre Steuerelement-ID Ihr Modell Bindungswert, Sie können auch einfach Firebug verwenden. Wählen Sie das Steuerelement aus und erhalten Sie standardmäßig die Steuerelement-ID.

Verwandte Themen