MVC get和post action方法共享参数值吗?

时间:2015-12-14 19:18:46

标签: asp.net-mvc-5

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

    public ActionResult Test(string sortby = "")
    {
        return View(myModel);
    }

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

2 个答案:

答案 0 :(得分:3)

在对不同操作的请求之间共享。唯一存在的是请求中包含的内容(GET的查询字符串,POST的邮件正文以及URL本身)。

您还没有提供有关如何设置网址的任何信息,但假设您有/test/{sortby}之类的路由,当您回发到该网址时,sortby参数将会是从URL填充,就像使用GET一样。否则,必须必须包含在帖子正文中才能填充它,这意味着您在表单中的某个位置保留了该值。

答案 1 :(得分:0)

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