我正在寫一個函數來隨機選擇JSON提要中的3篇文章。我創建了一個函數,它可以在給定的兩個端點之間生成一個隨機數,並且我有一個循環迭代3次,以將文章內容輸出到頁面上。如何將整數數組傳遞給Razor函數?
隨機數函數運行成功,for循環不會輸出文章信息到頁面。 randomNumber函數需要運行3次才能獲得3個隨機數,我需要確保一旦randomNumber1被選中,就不能再次被選中。所以我創建了一個數組(featuredStories)來存儲選取的數字,但無法將其傳遞到我的getRandomNumber函數中。
@{
Random rnd = new Random();
var featuredStories = new List<int>();
}
@functions {
public int getRandomNumber(int min, int max, Random rnd, int[] featuredStories) {
int randomNumber = rnd.Next(min, max);
if (featuredStories.Contains(randomNumber)){
randomNumber = getRandomNumber(min, max, rnd);
}else{
featuredStories.Add(randomNumber);
}
return randomNumber;
}
@for(var i = 1; i < 4; i++) {
int randomNo = getRandomNumber(1, items.Count(), rnd, featuredStories);
}
我目前得到一個錯誤:
剃刀語法錯誤。無重載方法「getRandomNumber的」 3個參數
微軟做過的最糟糕的事情(是曾經)是允許剃刀功能。 Razor是一種視圖綁定語言,它不應該包含邏輯。將邏輯移入控制器並構建視圖模型。那麼你沒有這個問題,你的代碼可以更好地分離問題。 – Liam
@Liam你能解釋一下如何將這段代碼移動到Controller中去除這個問題?另外,ASPX比Razor功能差得多。 –
你會得到一個編譯錯誤,告訴你問題是什麼。儘管我的主要例外是MVC,但微軟已經被劫持了。視圖不應該包含邏輯,函數是邏輯的。設計模式說這是錯誤的。 T''D遵循MVC的實際規則,你的代碼會更容易理解/維護,並且你會得到更少的錯誤 – Liam