1

ASP.NET MVC でモデルを検証するために、独自の属性を記述します。

public class ValidateImage : RequiredAttribute, IClientValidatable
{
    public override bool IsValid(object value)
    {
        // validate object
    }
}

このような属性を次のように使用します。

public class MyModel
{
    [ValidateImage]
    public HttpPostedFileBase file { get; set; }
}

今、コントローラーで機能させたいので、モデルの代わりにこの属性をプロパティに追加しました:

public ActionResult EmployeePhoto(string id, [ValidateImage] HttpPostedFileBase file)
{
    if(ModelState.IsValid)
    {
    }
}

しかし、私の属性は決して実行されません。モデルを使用せずにコントローラーで検証を機能させるにはどうすればよいですか?

4

1 に答える 1

2

これはサポートされていません。アクションのすべての引数をラップするビュー モデルを作成するだけです。

public ActionResult EmployeePhoto(EmployeePhotoViewModel model)
{
    if (ModelState.IsValid)
    {
    }
}

これは次のようになります。

public class EmployeePhotoViewModel 
{
    public string Id { get; set; }

    [ValidateImage]
    public HttpPostedFileBase File { get; set; }
}
于 2013-05-28T07:24:20.920 に答える