Параметр по умолчанию во всех действиях перед выполнением действий в mvc
Есть ли способ добавить какой-либо параметр по умолчанию для каждого действия в приложении MVC. Таким образом, я могу получить значение параметра, если отправить с привязки href.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int currentformcontrolid = 0;
foreach (var parameter in filterContext.ActionParameters)
{
if (parameter.Key == "FormControlID")
{
currentformcontrolid = Int32.Parse(parameter.Value.ToString());
}
}
}
и мой HREF, как это (это AJAX
якорный вызов):
<a
data-ajax="true"
data-ajax-method="GET"
data-ajax-mode="replace"
data-ajax-update="#soapfunction-screens"
href="/Patient/Intake?FormContorlID=100003"
data-islandingpage="False"
id="InkAlcoholDrug" >
Alcohol Drug Use
</a>
и мое действие, как (может быть любое действие в приложении, каждое действие должно иметь этот параметр FormControlID
public ActionResult WhatEverAction(int TestID=0)
{
}
В OnActionExecuting
я могу получить доступ только TestID
но не параметр href, который является FormControlID
3 ответа
Вы можете получить доступ к значениям строки запроса из Request
собственность HttpContext
имущество
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
int currentformcontrolid = Convert.ToInt32(filterContext.HttpContext
.Request.QueryString["FormControlID"].ToString());
}
Попробуй это
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
string FormControlID = filterContext.RequestContext.HttpContext.Request["FormControlID"];
base.OnActionExecuted(filterContext);
}
Вы можете попробовать указать этот параметр в маршруте:
routes.MapRoute(
name: “Default”,
url: “{controller}/{action}/{FormControlID}”,
defaults: new { controller = “Home”, action = “Index”, FormControlID = UrlParameter.Optional }
);