Asp.net mvc 5 MVC get和post操作方法是否共享参数值?

Asp.net mvc 5 MVC get和post操作方法是否共享参数值?,asp.net-mvc-5,Asp.net Mvc 5,我是MVC的新手,想知道为什么会发生以下情况。我的控制器中有两个用于方法测试的操作方法,一个用于Get,另一个用于Post。每个都包含一个“sortby”参数。当我调用Get方法时,“sortby”被设置为“ABC”。单击提交按钮并调用Post方法时,Post方法的“sortby”参数的值为“ABC”。我的问题是为什么?没有隐藏字段值,模型不包含“sortby”字段 您是否在GET返回带有myModel数据(很可能是定义的sortby参数)的视图后调用您的帖子?我只是猜测,需要更多的信息来告诉你

我是MVC的新手,想知道为什么会发生以下情况。我的控制器中有两个用于方法测试的操作方法,一个用于Get,另一个用于Post。每个都包含一个“sortby”参数。当我调用Get方法时,“sortby”被设置为“ABC”。单击提交按钮并调用Post方法时,Post方法的“sortby”参数的值为“ABC”。我的问题是为什么?没有隐藏字段值,模型不包含“sortby”字段


您是否在GET返回带有myModel数据(很可能是定义的sortby参数)的视图后调用您的帖子?我只是猜测,需要更多的信息来告诉你为什么会发生这种情况,但他们不应该分享任何东西。不知何故,您告诉这两种方法使用这些参数。

不同操作的请求之间没有共享任何内容。唯一存在的是请求中包含的内容(GET的查询字符串、post的post正文以及URL本身)


您没有提供关于URL设置方式的任何信息,但是假设您有一个类似于
/test/{sortby}
的路由,当您回发到该URL时,
sortby
参数将从URL填充,就像GET一样。否则,必须将其包含在帖子正文中才能填充,这意味着表单中的某个地方有一个隐藏字段保存该值。

为什么要在帖子上排序?POST的约定是应该使用它们来更改数据。请忽略参数的名称。我只想知道这个参数所维护的事实背后的逻辑是从“get”到“post”的值,而不将值保存在模型或隐藏字段中……当单击视图上的submit按钮时,会调用post。Sortby信息未保存在视图中。您可以发布HTML吗?实际上,如果您请求使用参数获取,然后在不删除参数的情况下发布,则默认情况下,参数将随post一起发送,您需要告诉您的post操作在HTML表单标记中使用自己的参数,否则,它将默认为您作为gethank发送的URL。如果您是一个懒惰的程序员,那么您就搞定了。我看了看我的表单标签,发现Get的参数被用作Post的参数。这就是为什么我可以在这两种方法中看到参数值。我是MVC新手,非常感谢您的时间和洞察力。要扩展,您确实有一个带有
../Test/{sortby}
的路由,然后将
sortby
的值添加为路由参数(查看您生成的表单元素的html-它将具有
/Test/ABC
),
    public ActionResult Test(string sortby = "")
    {
        return View(myModel);
    }

    [HttpPost]
    public ActionResult Test(modelType myModel, string sortby = "")
    {
        return View(myModel);
    }