2011-07-12 13 views
20

Używam MVC3 i chciałem użyć częściowego widoku do stworzenia dynamicznych elementów DOM. To jest mój aktualny widok częściowy:Czy istnieje sposób łączenia ciągów znaków w atrybutach HTML?

@model MVCApp.ViewModels.TitlesViewModel 

<div class="display-label">Name</div> 
<div id="label"+"@Model.Id" class="display-field">@Model.InitValue</div> 

Model.Id jest 1, ale w HTML w przeglądarce, to obecnie dostać:

id="label"+"1" 

więc jeśli mogę spróbować zrobić coś takiego:

alert($("#label1").text()) 

Istnieje pole alertu bez niczego.

W jaki sposób dodać dwa łańcuchy tekstowe, aby utworzyć spójny łańcuch rozpoznawany przez jQuery (lub document.getElementByID (str)).

Odpowiedz

44

Spróbuj tego (niezweryfikowany):

<div id="@("label"+Model.Id)" class="display-field">@Model.InitValue</div> 
+0

To zadziałało: '

@Model.InitValue
' Wielkie dzięki. – user558594

+2

Dodano już cytaty (podczas gdy publikujesz swój komentarz) :) – Mrchief

+0

Tak, widziałem. Dzięki za pomoc. Wciąż jestem nowicjuszem w składni MVC3 i Razor. – user558594

2

Chcecie:

<div id="[email protected]" ... 

Razor rozpozna @ jako początek kodu, wykonanie go i czyni wyniki na miejscu w atrybucie.

Edit:

To nie działa dobrze jako komentarz, ale tu jest linia z jednego z moich kontroli Razor:

<input type="text" readonly="readonly" 
     class="display-field [email protected]" 
     id="@((ViewData["id"] == null) ? 
     ViewData.ModelMetadata.PropertyName : ViewData["id"])" 
     value="@Proj.GetJobStatusValue(Model)" /> 

spróbuj dodać myślnik (-) przed @. Jest całkiem możliwe, że Razor myśli, że to adres e-mail i zostawia go w spokoju!

+0

Próbowałem tego. W źródle HTML w mojej przeglądarce identyfikator to po prostu "[email protected]" – user558594

1

Wystarczy dodanie innej opcji jest to, co pracował dla mnie, gdy próbuje Concat ciąg i wartości modelu jako identyfikator w @ Html.ActionLink a także dla wartości tekstowej . Musiałem użyć string.Concat. Nie wiem, czy to jest złe z punktu widzenia wydajności.

@Html.ActionLink(string.Concat("View all (", @Model.FooCount, ")"), 
     //actionName   
     "SeeAllFoos", 
     //ControllerName 
     "Foo", 
     // routeValues 
     new { FooId = @Model.Foo.id }, 
     //htmlAttributes 
     new { @class = "btn btn-success", onclick = "ShowProgress();", 
     id = string.Concat("Foo",@Model.Foo.id.ToString()) }) 
Powiązane problemy