0

フィールドに値が入力されているかどうかを検証するコントローラーアクションがあります。これが私がそれをする方法です:

[HttpPost]
        public ActionResult ValidateFields(string Desc, string Status, string Name )
        {
            string[] fields = new string[3];

            if (string.IsNullOrEmpty(Desc))
                fields[0] = "#Desc";

            if (string.IsNullOrEmpty(Status))
                fields[1] = "#Status";

            if (string.IsNullOrEmpty(Name))
                fields[2] = "#Name ";

// Check if the initialized array "fields" has any items in it.
            if (fields != null)
            { return content("Please enter valid values for " + fields); }

            return content("Validation Successful");
        }

ここでは、配列「fields」が初期化されているため、その長さが0になることはありません。また、nullのチェックは機能しません。私にできることは、配列をループして、配列に項目が含まれているかどうかを確認することだけです。

配列にアイテムが含まれているかどうか、または単にnull値が含まれているかどうかを確認するためのより良い方法はありますか?

また、私が行っている方法よりもフィールドを検証するためのより良い方法がある場合は、私に知らせてください。メンテナンス可能にしたいのですが、明日新しいフィールドを追加した場合、それらの検証にできるだけ時間をかけたくありません。

4

4 に答える 4

4

List<string>代わりにa を使用しないのはなぜですか。これにより、各フィールドを追加できるようになり、リストの長さを確認できます。

于 2013-01-15T18:52:31.857 に答える
2

リストを使用します。

    [HttpPost]
    public ActionResult ValidateFields(string Desc, string Status, string Name )
    {
        List<string> fields = new List<string>();

        if (string.IsNullOrEmpty(Desc))
            fields.Add("#Desc");

        if (string.IsNullOrEmpty(Status))
            fields.Add("#Status");

        if (string.IsNullOrEmpty(Name))
            fields.Add("#Name");

        // Check if the list "fields" has any items in it.
        if (fields.Any()) {
             return content("Please enter valid values for " + string.Join(", ", fields)); 
        }

        return content("Validation Successful");
    }

アップデート

検証するもう1つの、おそらくより優れた、より保守しやすい方法は、モデルクラスを作成し、検証属性を追加することです。ここを参照してください。

于 2013-01-15T18:54:41.907 に答える
2

私はあなたができると信じています:

if (fields.Any(f => !string.IsNullOrEmpty(f)))
于 2013-01-15T18:57:48.560 に答える
1

配列に対しても実行できます。呼び出すだけです:

fields.Any(i => i != null)

組み込みの ASP.NET MVC 検証メカニズムを使用して、検証を改善することもできます。

于 2013-01-15T18:55:35.330 に答える