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

本文关键字:控制器 视图 NET MVC 参数 ASP | 更新日期: 2023-09-27 17:50:14

我正在寻找一种方法来知道当控制器被调用时按下了什么链接。我的链接在我的视图页:

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

和我的文件控制器在这里:

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

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

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

您应该将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>

向控制器发送参数的方式取决于您如何配置路由。

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

...
[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);
    }
}

你可以在微软网站上找到更多的细节或关于这个问题