2011-03-24 39 views
2

我有一個RegisterModel視圖模型,用於我的新帳戶註冊頁面。取決於註冊任務的狀態,模型具有要向用戶顯示的相關文本消息,例如, 「等待電子郵件確認」等MVC3模型代碼中的HTML文字

我目前以下面的方式填充此字符串屬性,但不禁想知道如何混合標記和內容,就像我對<p>標籤所做的一樣。除了使用實際的HTML文字而不是模型屬性來創建多個部分視圖之外,是否有更好或更可接受的方法?

RegisterMessage = "<p>Please use the form below to create a new account.</p>"; 
RegisterMessage = string.Format("<p>Passwords are required to be a minimum of {0} characters in length.</p>", _membershipService.MinRequiredPasswordLength); 

編輯:我剛纔注意到,<p>標籤渲染誇張地說,但我懷疑同樣的問題,在這個問題下降。

@if (Model.Status == Status.StatusA) 
{ 
    <div>Message 1</div> 
} 
else if (Model.Status == Status.StatusB) 
{ 
    <div>Message 2</div> 
} 

,如果你想呈現在剃刀HTML文本沒有編碼它們:

@Html.Raw(Model.RegisterMessage) 

但這個例子

+0

我想你錯過了你打算提供的例子。 – tvanfosson 2011-03-24 17:58:13

+0

我想你應該更好地描述你的意思。 – jfar 2011-03-24 18:09:09

+0

@tvanfosson我已經添加了我遺忘的樣本。 – ProfK 2011-03-24 18:19:14

回答

5

你可以在視圖模型和視圖使用狀態屬性您顯示的內容看起來像驗證錯誤消息,也可能存儲在資源文件中。

+2

Upvote for @ @:' – 2011-03-24 18:23:41

+0

我使用':'符號得到解析器錯誤:*「:」在代碼塊的開始處無效。只有標識符,關鍵字,註釋,「(」和「{」是有效的。* – ProfK 2011-03-24 18:39:24

+0

@ProfK,這是因爲'@:'在這種情況下是不合適的,我已經從我的答案中刪除了它。 RegisterMessage「,它會在結果HTML中呈現'Model.RegisterMessage'而不是評估屬性,所以如果你想渲染未編碼的值,你應該使用'@ Html.Raw(Model.RegisterMessage)' – 2011-03-24 18:54:16