JSONフィードから3つの記事をランダムに選択する関数を書いています。私は与えられた2つのエンドポイントの間に乱数を生成する関数を作成しました。そして、私はページに記事の内容を出力するために3回反復するforループを持っています。整数配列を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);
}
は、私は現在、エラーを取得しています。 4つの引数
だ。しかし、その関数の内部で、それだけで3つの引数に自分自身を呼び出すこと
public int getRandomNumber(int min, int max, Random rnd, int[] featuredStories) {
:メソッドの過負荷は、「getRandomNumber」あなたのようにあなたの関数を定義した3つの引数
マイクロソフトが今までやった最悪の事態を(はい、これまで)カミソリで機能を許可しています。カミソリはビューバインディング言語であり、ロジックを含むべきではありません。ロジックをコントローラに移動し、ビューモデルを構築します。それでは、この問題はなく、あなたのコードはより良い懸念を抱いています。 – Liam
@Liamこのコードをコントローラに移動してこの問題を解決する方法を説明できますか?また、ASPXはRazorの機能よりもはるかに悪いです。 –
問題が何であるかを示すコンパイルエラーが発生します。私の主な例外は、MVCはMicrosoftがハイジャックしたデザインパターンです。ビューにはロジックが含まれてはいけません。機能はロジックです。デザインパターンはこれが間違っていると言います。 Tl'DrはMVCの実際のルールに従います。コードは理解しやすく、維持しやすく、バグは少なくなります – Liam