您好我希望从客户要求中获取一些参数, 我需要分析它们并做出一些动作,但我除了向任何页面提出这种请求。 如何使用ASP MVC在一个地方处理它? 我可以使用属性,但我不确定这是一个好的解决方案,我不想改变方法签名。
答案 0 :(得分:1)
我为这样的任务创建了一些ActionFilter
s。例如,一个检查每个POST请求的Anti Forgery令牌,如果找不到或无效,则给出错误。所以我不必检查它并重定向到每个控制器上的适当页面。
答案 1 :(得分:1)
是的,使用Attributes是一个很好的解决方案。您可以使用ASP.Net ActionFilters(它使用Attributes)。他们可以帮助拦截采取行动的呼吁并进一步做出决定。
以下是ASP.Net网站的示例代码 - http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/understanding-action-filters-cs
using System;
using System.Diagnostics;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcApplication1.ActionFilters
{
public class LogActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
Log("OnActionExecuting", filterContext.RouteData);
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
Log("OnActionExecuted", filterContext.RouteData);
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
Log("OnResultExecuting", filterContext.RouteData);
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
Log("OnResultExecuted", filterContext.RouteData);
}
private void Log(string methodName, RouteData routeData)
{
var controllerName = routeData.Values["controller"];
var actionName = routeData.Values["action"];
var message = String.Format("{0} controller:{1} action:{2}", methodName, controllerName, actionName);
Debug.WriteLine(message, "Action Filter Log");
}
}
}
在您的Controller Action方法中。使用LogActionFilter
装饰动作或使用Filter装饰整个Controller,在下面的情况下,将在所有Controller的动作中调用Filter。我猜这适合你...
using System.Web.Mvc;
using MvcApplication1.ActionFilters;
namespace MvcApplication1.Controllers
{
[LogActionFilter]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult About()
{
return View();
}
}
}
答案 2 :(得分:1)
您必须使用此方法
string param = HttpContext.Current.Request.QueryString["param"];
答案 3 :(得分:0)
您可以使用Querysting
将其添加到签名的操作方法
这是一个例子
public ActionResult YourAction(string param1, string param2)
{
string _param1= param1;
string _param2= param2;
return View();
}
它会接受一个查询... / YourRoute?param1 = value1& param1 = value2
同时也看一看 QueryString MVC