有沒有辦法用強制參數創建ASP.NET MVC屬性?控制器屬性的ASP.NET MVC強制性參數
[MyPersonalAttribut(MyMandatoryValue="....")]
public ActionResult Index()
{
return View();
}
感謝,
有沒有辦法用強制參數創建ASP.NET MVC屬性?控制器屬性的ASP.NET MVC強制性參數
[MyPersonalAttribut(MyMandatoryValue="....")]
public ActionResult Index()
{
return View();
}
感謝,
最簡單的方法是有index方法
public ActionResult Index(int id)
{
return View();
}
不可爲空的參數需要一個有效的int導航有
你可以試一下像這樣,
動作過濾器
public class MandatoryAttribute: FilterAttribute, IActionFilter
{
private readonly string _requiredField;
public MandatoryAttribute(string requiredField)
{
_requiredField = requiredField;
}
public void OnActionExecuted(ActionExecutedContext filterContext)
{
}
public void OnActionExecuting(ActionExecutingContext filterContext)
{
var val = filterContext.Controller.ValueProvider.GetValue(_requiredField);
if (val == null || string.IsNullOrEmpty(val.AttemptedValue))
throw new Exception(string.Format("{0} is missing"),
_requiredField);
}
}
行動
[Mandatory("param")]
public ActionResult MyTest()
{
return Content("OK");
}
是的,但它在運行時。我想在彙編時間。 – 2012-07-11 16:40:35
我不明白你編譯的時間是什麼意思? – VJAI 2012-07-11 16:44:16
如果強制性參數不存在,我將該屬性放在操作的頂部,我收到一個編譯錯誤。 – 2012-07-13 08:28:03
您可以輕鬆地做到這一點的只有一個在它有一個參數的構造屬性。就像這樣:
public class MyPersonalAttribute : Attribute
{
public object MyMandatoryValue { get; private set; }
// The only constructor in the class that takes one argument...
public MyPersonalAttribute(object value)
{
this.MyMandatoryValue = value;
}
}
然後,如果你會得到一個收到一個編譯錯誤,如果你沒有采用像下面的屬性時的說法:
這將工作:
[MyPersonalAttribute("some value")]
public ActionResult Index()
{
return View();
}
這會給你一個編譯錯誤:
[MyPersonalAttribute()]
public ActionResult Index()
{
return View();
}
我知道,但我想一個屬性 – 2012-07-11 06:00:30
@克里斯-I *瓦你*你想要一個屬性? – 2012-07-11 13:53:45