Параметр по умолчанию во всех действиях перед выполнением действий в mvc - PullRequest
0 голосов
/ 07 июня 2018

Есть ли способ добавить какой-либо параметр по умолчанию для каждого действия в приложении 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 ]

0 голосов
/ 07 июня 2018

Вы можете попробовать указать этот параметр в маршруте:

routes.MapRoute(
    name: “Default”,
    url: “{controller}/{action}/{FormControlID}”,
    defaults: new { controller = “Home”, action = “Index”, FormControlID = UrlParameter.Optional }
);
0 голосов
/ 07 июня 2018

Попробуйте это

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{

    string FormControlID = filterContext.RequestContext.HttpContext.Request["FormControlID"];

    base.OnActionExecuted(filterContext);
}

enter image description here

0 голосов
/ 07 июня 2018

Доступ к значениям строки запроса можно получить из свойства Request свойства HttpContext

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
    int currentformcontrolid = Convert.ToInt32(filterContext.HttpContext
       .Request.QueryString["FormControlID"].ToString());
}
...