1

ASP.NET MVC のカスタム ModelBinder で、既定値を持つパラメーターにバインドしているかどうかを確認するにはどうすればよいですか?

デフォルト値:

public void Show(Ship ship = null)
{
     // ...
}

デフォルト値なし:

public void Show(Ship ship)
{
     // ...
}

モデルバインダー:

public class ModelBinder : DefaultModelBinder
{
    public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
    {
        var modelType = bindingContext.ModelType;

        // Is it an item from the database?
        if (typeof(IDbObject).IsAssignableFrom(modelType))
        {
            // Get from database...
            var result = BindValue();

            if (result == null && NotOptional()) // Code for NotOptional needed
                throw new Exception();

            return result;
        }
    }
}

ユーザーがアクションへのリクエストを行い、必要なすべての情報を提供しない場合にエラーメッセージを表示したいので、これを知りたいです(デフォルト値を持たないすべてのパラメーターになります)。

4

2 に答える 2

0

メソッドの入力パラメーターにデフォルト値があるかどうかを確認する効率的または合理的な方法はないと思います。入力データが適切であることを確認する方法を探している場合は、ビュー フォーム フィールドをモデルにバインドし、ModelState.IsValid を使用してすべてのフィールドにデータがあるかどうかをテストします。

ここで素晴らしい紹介を見つけることができます: http://www.codeproject.com/Articles/710776/Introduction-to-ASP-NET-MVC-Model-Binding-An-Absol

于 2014-07-14T10:03:44.457 に答える