ASP.NET MVC将参数从视图传递给控制器

时间:2015-05-20 19:49:28

标签: c# asp.net asp.net-mvc

我正在寻找一种方法来了解调用控制器时按下的链接。我的链接位于我的视图页面中:

<li id="tabFiles"><a href="~/Files" id="test">Files</a></li>

我的文件控制器在这里:

    public ActionResult Index(string submit)
    {
        string s = submit;

            return View();

    }

我试图传入一个字符串,希望它是被点击链接的id,但这只返回一个null。

2 个答案:

答案 0 :(得分:3)

您应该将id作为查询字符串传递:

<li id="tabFiles"><a href="~/Files/?id=test">Files</a></li>


public ActionResult Index(string id)
{
    string s = id;
    return View();
}

或者你可能希望以这种形式传递它:

<li id="tabFiles"><a href="~/Files/test">Files</a></li>

将参数发送到控制器的方式取决于您配置routing的方式。

答案 1 :(得分:1)

你可以创建自定义动作过滤器并在控制器上设置它,如下所示:

...
[CustomActionFilter]
public class FilesController : Controller
{
    ...
}

在此自定义过滤器上,您可以获得如下操作名称:

public class 

CustomActionFilter : ActionFilterAttribute, IActionFilter
{
    void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)


    {
        // TODO: Add your acction filter's tasks here

        // Log Action Filter Call
        MusicStoreEntities storeDB = new MusicStoreEntities();

        ActionLog log = new ActionLog()
        {
            Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
            Action = filterContext.ActionDescriptor.ActionName + " (Logged By: Custom 

Action Filter)",
            IP = filterContext.HttpContext.Request.UserHostAddress,
            DateTime = filterContext.HttpContext.Timestamp
        };

        storeDB.ActionLogs.Add(log);
        storeDB.SaveChanges();

        this.OnActionExecuting(filterContext);
    }
}

您可以在Microsoft网站或here问题上找到this的更多详细信息。