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 回答