<% using (Html.BeginForm("SubmitUserName")) { %>
    <input type='text' name='user-name' />
    <input type='submit' value='Send' />
<% } %>
什么应该是相应的Action方法的签名来接受user-name参数?
public ActionResult SubmitUserName(string user-name) {...}
上面的方法签名由于某种原因不起作用;-)
我知道有一个ActionNameAttribute处理行动名称破折号的情况.有类似的东西ParameterNameAttribute吗?
And*_*son 13
众所周知,最简单的解决方法是不使用破折号.如果你真的需要破折号,你可以创建自己的ActionFilterAttribute来处理它.
就像是:
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true)]
public class ParameterNameAttribute :  ActionFilterAttribute
{
    public string ViewParameterName { get; set; }
    public string ActionParameterName { get; set; }
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if(filterContext.ActionParameters.ContainsKey(ViewParameterName))
        {
            var parameterValue = filterContext.ActionParameters[ViewParameterName];
            filterContext.ActionParameters.Add(ActionParameterName, parameterValue);   
        }
    }
}
然后,您将过滤器应用于相应的Action方法:
[ParameterName( ViewParameterName = "user-data", ActionParameterName = "userData")]
[ParameterName( ViewParameterName = "my-data", ActionParameterName = "myData" )]
    public ActionResult About(string userData, string myData)
    {
        return View();
    }
您可能希望增强ParameterNameAttribute以处理大写/小写,但这将是基本的想法.
Edw*_*rey 12
在action方法的第一行中创建一个伪参数:
public ActionResult SubmitUserName()
{
    string userName = Request.Params["user-name"];
    ...
}
不是基于所讨论的技术来回答实际问题,但无论如何,世界在某些领域是向前发展的;在 AspNetCore.Mvc 中,您可以简单地执行以下操作:
    [HttpGet()]
    public ActionResult SubmitUserName( [FromHeader(Name = "user-Name")] string userName) {...}
| 归档时间: | 
 | 
| 查看次数: | 8284 次 | 
| 最近记录: |