0

MVC アプリケーションを開発しています。検証目的のコントローラーを Validation クラスに送信したい。そのクラスはコントローラーのプロパティを検証し、結果を送信します。クラスでコントローラーを取得した後、コントローラーの名前とプロパティを取得する方法を取得していません。

以下のコードはコントローラー クラス コードで、このコントローラーを検証クラスという名前のクラスに送信します。

[HttpPost]
    public ActionResult Create(Location location)

    {
        if (ModelState.IsValid)
        {
            Validations v = new Validations();
            Boolean ValidProperties = true;

            //Sends the controller to Validation class
            v.ValidProperty(this);



             if (ValidProperties == true)
             {
                 db.Locations.Add(location);
                 db.SaveChanges();
                 return RedirectToAction("Index");

             }


        }
     }         

以下のコードは、コントローラーを検証する Validations という名前のクラスです。

現在、コントローラーの名前とそのプロパティを取得する方法がわかりません。

  public class Validations
{
   string PropertName;




    public void  ValidProperty(Controller ctr)
    {

        var name1 = ctr;


        string s = ctr. ????????
        //How to get Controller Name and its properties ? 


    }
 }
4

1 に答える 1

0

リフレクションを使用して名前を次のように取得します。

var name = this.GetType().Name;

または、選択したカスタム ベース コントローラーを作成し、それにプロパティとメソッドを追加して、派生コントローラーを次のように処理することもできます。

public abstract class BaseController : Controller
{
    // add other properties as needed
    public abstract string Name { get; protected set; }

    public virtual void ValidProperty()
    {
        string s = Name;
        //something esle
    }

}

public class YourController : BaseController
{
    private string _name;
    public override string Name
    {
        get { return _name; }
        protected set { _name = "Your_Name"; }
    }


    [HttpPost]
    public ActionResult Create(Location location)
    {
        if (ModelState.IsValid)
        {                
            bool validProperties = true;

            // Deals with a base controller method
            ValidProperty();

            // or something like this, if you prefer

            var controller = (BaseController) this;
            Validations v = new Validations();
            //Sends the controller to Validation class
            v.ValidProperty(controller);


            if (validProperties)
            {
                db.Locations.Add(location);
                db.SaveChanges();
                return RedirectToAction("Index");

            }
        }
        return Content(string.Empty);
    }       
}
于 2012-08-02T18:42:46.517 に答える