我發現這個答案有幫助,但我不確切知道如何提供的示例幫助。它似乎只是「重命名」一個已經準備好的資料夾。
在我的情況下,我被張貼到一個外部服務,將張貼像「body-plain」的東西,我無法控制名稱。所以我修改這個樣品看起來像這樣:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class ParameterNameMapAttribute : ActionFilterAttribute
{
public string InboundParameterName { get; set; }
public string ActionParameterName { get; set; }
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
object value = filterContext.RequestContext.HttpContext.Request[InboundParameterName];
if (filterContext.ActionParameters.ContainsKey(ActionParameterName))
{
filterContext.ActionParameters[ActionParameterName] = value;
}
else
{
throw new Exception("Parameter not found on controller: " + ActionParameterName);
}
}
}
這實際上發生在參數「身體平原」爲例,它映射到我我的控制器上定義的ActionParameter。像這樣:
[ParameterNameMap(InboundParameterName = "body-plain", ActionParameterName = "bodyPlainText")]
[ParameterNameMap(InboundParameterName = "Thread-Topic", ActionParameterName = "alternateSubject")]
public HttpStatusCodeResult Process(string token, string timestamp, string signature, string subject, string sender, string recipient, string bodyPlainText, string alternateSubject)
{
你真的需要使用幾許? – 2010-08-11 18:04:55
是否需要**才能成爲用戶名? – Buildstarted 2010-08-11 18:05:27
根本不需要。令人費解的是MVC沒有想到這種情況。我實際上並沒有使用它,只是好奇它是否存在......或者它爲什麼不存在。 – 2010-08-11 19:06:51