2017-06-07 20 views
0

Projectと呼ばれる主なモデルには、私が定義したクラスであるAddress型の2つの変数があります。私はフィールドの定義に基づいてアドレスの動的な書式設定をしたいので私DisplayTemplateのコードは次のとおりです。MVC DisplayTemplateはC#の文字列変数を表示しません

@model ProjectClearanceApp.Models.Project.Address 

@{ 
    string addr = ""; 
    if (!String.IsNullOrEmpty(Model.Line1)) 
    { 
     addr += (Model.Line1 + "\n"); 
    } 
    if (!String.IsNullOrEmpty(Model.Line2)) 
    { 
     addr += (Model.Line2 + "\n"); 
    } 
    if (!String.IsNullOrEmpty(Model.City)) 
    { 
     addr += Model.City; 
    } 
    if (!String.IsNullOrEmpty(Model.State)) 
    { 
     addr += (", " + Model.State); 
    } 
    if (Model.ZipCode != 0) 
    { 
     addr += (", " + Model.ZipCode); 
    } 
    Html.Raw(addr); 
} 

私はもともと私の表示テンプレートのように定義されていたので、私は文字列変数を使用して、それに追加しています理由は次のとおりです。

@model ProjectClearanceApp.Models.Project.Address 

@if (!String.IsNullOrEmpty(Model.Line1)) 
{ 
    @Html.DisplayFor(model => model.Line1) 
    <br /> 
} 
@if (!String.IsNullOrEmpty(Model.Line2)) 
{ 
    @Html.DisplayFor(model => model.Line2) 
    <br /> 
} 
@if (!String.IsNullOrEmpty(Model.City)) 
{ 
    @Html.DisplayFor(model => model.City) 
} 
@if (!String.IsNullOrEmpty(Model.State)) 
{ 
    @:, @Html.DisplayFor(model => model.State) 
} 
@if (Model.ZipCode != 0) 
{ 
    @:, @Html.DisplayFor(model => model.ZipCode) 
} 

が、最後の3理由DisplayForは別々の行にあります(少なくとも私の考えは間違っている可能性があります)。アドレスはFakeCity , FakeState , 12345として表示され、各カンマの前に空白が付きます。

しかし、私は文字列を使用すると、私のページの変数は表示されません。最後の行(Html.Raw(addr);)にブレークポイントを設定し、アドレスが処理中にコードが取得されるときにaddrが正しい値を持っていますが、ページ自体をレンダリングするときに何も表示されません。私はHtml.Display(addr);Html.DisplayText(addr);を試しましたが、まだ運がありません。

答えて

1

先頭に@Html.Raw()を追加する必要があります。それがなければ、メソッドを実行し、値を返さずに結果を出力します。

@model ProjectClearanceApp.Models.Project.Address 
@{ 
    string addr = ""; 
    .... 
    @Html.Raw(addr); // add leading `@` 
} 
+0

コードブロック全体が '@ {...} 'で囲まれていますが、 –

+0

はい:) - 試しましたか? –

+0

明日まで私はコードの前に再びいませんが、それが動作すれば教えてくれます! –

関連する問題