2011-07-12 33 views
20

私はMVC3を使用しており、部分的なビューを使用して動的なDOM要素を作成したいと考えました。これは私の現在の部分図である。html属性で文字列を連結する方法はありますか?

@model MVCApp.ViewModels.TitlesViewModel 

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

Model.Idは1ですが、ブラウザでHTMLに、私は現在入手:

:私のようなものを試してみませんかあれば

id="label"+"1" 

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

何も表示されていないアラートボックスがあります。

どのように2つの文字列を一緒に追加して、jQuery(またはその問題についてはdocument.getElementByID(str))によって認識される1つの一貫性のある文字列を形成できますか。あなたが欲しい

答えて

44

これは、(検証)してみてください。ただ、このように別のオプションを追加すること

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

です。これはうまくいきました: '

@Model.InitValue
'ありがとう。 – user558594

+2

今すぐ引用符を追加しました(あなたのコメントを投稿している間に):) – Mrchief

+0

ええ、私は見ました。しかし、助けてくれてありがとう。私はまだMVC3とRazorの構文が初めてです。 – user558594

2

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

カミソリは、コードのスタートとして@を認識し、それを実行し、属性に場所で結果をレンダリングします。

編集:

これはコメントとしてうまく機能しませんでしたが、ここに私のカミソリコントロールのいずれかからのラインです:ハイフンを追加

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

てみてください( - )@の前に。 Razorはそれが電子メールアドレスだと思って、それを残している可能性が非常に高いです!

+0

私はそれを試みました。私のブラウザのHTMLソースでは、IDは単に "[email protected]" – user558594

1

である私のために働い何@ html.ActionLinkものためのテキスト値にIDとして文字列とモデル値をCONCATしようとしたとき。私はstring.Concatを使う必要があった。これがパフォーマンスの観点から悪いのかどうかはわかりません。

@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()) }) 
関連する問題