gpt4 book ai didi

c# - 在 asp.net MVC 中获取第三个参数

转载 作者:行者123 更新时间:2023-11-30 20:33:01 24 4
gpt4 key购买 nike

我有一个 asp.net MVC 网站,我有这个 url:

Home/Index/

我想执行一项操作,目前我正在使用查询字符串执行此操作,如下所示:

Home/Index/?action=1

然后我将使用 Request.QueryString["action"] 在我的代码中获取它。

但这看起来并不像它应该的那样好,我想要这样的东西:

Home/Index/Action

所以查询字符串将是第三个参数。我怎样才能像这样使用它并检查第三个参数是否存在以及它的名称?

我的路由是这样配置的:

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

我是否需要更改路线上的任何内容,或者我可以按我想要的方式输入,如果需要,我如何检索该值?


编辑:

好的。我想做的是根据此参数在 View 中产生不同的结果。

我现在所做的是创建两个 ActionResults,它们使用相同的 View 向 ViewData 发送不同的值。

最佳答案

在 MVC 中有模型绑定(bind)的概念,其中使用参数的名称,然后用表单中的值填充,而无需您这样做。

如果您这样编写 Action 方法:

public ActionResult Index(int action)
{ ... }

那么它就已经适用于 /Home/Index?action=1

如果您希望能够像/Home/Index/1 那样调用它,那么最简单的方法就是像这样简单地编写Action 方法:

public ActionResult Index(int id)
{ ... }

这是有效的,因为 MapRoute 定义基本上说“如果在 {action} 部分之后有东西(顺便说一下,在本例中是“Index”),然后给它参数名{id} 并将其绑定(bind)到我的 Action 方法的 {id} 参数。


更新:
两种调用场景中使用名为action 的参数的问题在于{action} 是 MVC 中的一个特殊关键字。
要在两种调用场景中使用 MySpecialParam,您只需添加此路由:

routes.MapRoute(
name: "Default_MySpecialParam",
url: "{controller}/{action}/{MySpecialParam}",
defaults: new { controller = "Home", action = "Index", MySpecialParam = UrlParameter.Optional }
);

但是,如果 MySpecialParam 成为 action,那么存在 MVC 可能获胜的名称解析冲突不知道如何处理,否则它甚至可能会抛出错误。

关于c# - 在 asp.net MVC 中获取第三个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40741029/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com