2017-02-01 4 views
-1

MVCビューのテキスト内に2つのリンクを持つテキストを表示したいと思います! テキストリンクは、サーバ側から動的であり、コントローラで次のようになります。ビューでmvcビューの変数をhtml属性クラスを持つようにrazorで宣言する方法

Model.Message = "You have used up all your credits for this month (see your credit balance {FirstLink}). You can buy credits {SecondLink}"; 

私はこれはそれのようにされて働いているが、私はクラスを追加する必要があり、この

@{ 
var messageToShow = @Model.Message; 

var newText = Html.ActionLink(Model.LinkText, Model.LinkAction, Model.LinkController, Model.LinkRouteValues).ToString(); 

var link = Html.ActionLink(Model.SecondLinkText, Model.SecondLinkAction, Model.SecondLinkController, Model.LinkRouteValues).ToString(); 

} 

@if (!string.IsNullOrEmpty(Model.LinkText)) 
{ 
    messageToShow = messageToShow.Replace("{FirstLink}", newText); 
} 

@if (!string.IsNullOrEmpty(Model.SecondLinkText)) 
{ 
    messageToShow = messageToShow.Replace("{SecondLink}", link); 
}[![enter image description here][1]][1] 

@Html.Raw(messageToShow) 

のようなものを持っています閉鎖}がひどくカミソリエンジンによって解釈されているので、新しい{@class =「リンク」}追加する場合、この

@Html.ActionLink(Model.SecondLinkText, Model.SecondLinkAction, Model.SecondLinkController, Model.LinkRouteValues, new { @class = "link" }) 

等これに私は、構文エラーが発生しました。

より良い解決法をお手伝いすることができますか?

おかげ

答えて

0

あなたは、コードブロックの中にいるときActionLinkの前に「@」を前に付ける必要はありません。それを削除すると、構文エラーが消えてしまいます。

1

LinkRouteValuesはtypeof演算RouteValueDictionary、または

public object LinkAttributeValues { get; set; } 

LinkRouteValues場合であれば、構文エラーを解決するために、あなたのビューモデルは

public IDictionary<string, object> LinkAttributeValues { get; set; } 

どちらか、HTML属性のプロパティを含める必要があります型番object

そしてコードは

になります LinkTextまたは SecondLinkTextのいずれかが nullまたは空の文字列だった場合には、コードの前の Html.ActionLink(..)行が例外を投げていたので、コードのように両方のあなたの @if (!string.IsNullOrEmpty(Model....))行は無意味です
Html.ActionLink(Model.SecondLinkText, Model.SecondLinkAction, 
    Model.SecondLinkController, Model.LinkRouteValues, Model.LinkAttributeValues) 

注意。

1つのオプションは、単に

<span>You have used up all your credits for this month (see your credit balance</span> 
@Html.ActionLink(Model.LinkText, Model.LinkAction, Model.LinkController, Model.LinkRouteValues, new { @class = "link" }) 
<span>). You can buy credits</span> 
@Html.ActionLink(Model.SecondLinkText, Model.SecondLinkAction, Model.SecondLinkController, Model.LinkRouteValues, new { @class = "link" }) 

を使用するのだろうか、コントローラ内のメッセージテキストを設定したい場合、あなたは、2つの性質を持っているを言うとstring Message2と使用することができます<span>@Model.Message1</span>....

関連する問題