2013-10-16 32 views
2

我的問題是關於使用MVC Razor視圖引擎。應該使用Razor視圖中的函數嗎?

要顯示數據,可以使用一些C#函數作爲內聯函數,例如

<td>@(Html.DisplayFor(m=>row.CurrencyFrom).ToString().Substring(3,3))</td> 
<td>@(Html.DisplayFor(m=>row.rate).ToString("0.#####"))</td> 

這是在這裏使用這些功能的好方法。我很抱歉,我是MVC和Razor的新手,但看起來它不符合分離原則。請指導我做這些格式和功能的正確方法。不確定是否有一種最佳實踐或指導方針可用?

非常感謝您的指導。

回答

2

這不一定是件壞事。在顯示器相關的視圖中執行此操作比在控制器或類似操作中執行操作更好。

但是,我同意你的擔心,它可能不是最好的方法。

這個問題的ASP.NET MVC解決方案是通過使用屬性。特別是使用DisplayFormat屬性。

您面臨的問題(我之前遇到過)是,雖然似乎屬於視圖(因爲它是關於如何顯示的),但它很快意味着您在許多視圖中一遍又一遍地寫同樣的東西,複製代碼。

有了像[DisplayFormat]這樣的屬性,你可以用你希望顯示的方式來修飾你的視圖模型屬性。

[DisplayFormat(DataFormatString="{0:C}")] 
public object StandardCost; 

對於獎勵積分,您甚至可以創建自己的自定義屬性並適當地命名以減少代碼重複。

[Percentage] 
public int Rate; 
[Currency] 
public int Cost; 
+0

謝謝,我真的很感謝你的意見。按照我的架構,我正考慮在ModelView類中使用一些格式化的字段。這些字段當然不會與DB映射。不確定你對這個想法的看法。 – Toubi

+1

我會說這很好。視圖模型只包含視圖所需的任何內容。它可以包含任何東西;商業模式實體與否。 –

相關問題