FormMethod.Post在MVC4中返回查询字符串

时间:2012-10-22 05:07:59

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

我在_Layout.cshtml页面中传递了我的查询字符串

  <li>@Html.ActionLink("Shopping", "Index1", new { controller = "Shopping", UserID = "Admin1" })</li>  


我有一个更新视图来更新文本框中的值

 @using (Html.BeginForm("Update", "Shopping", new { id = Request.QueryString["UserID"] }, FormMethod.Post, new { id = "myForm" }))
         {
               @Html.Hidden("id", @Request.QueryString["UserID"] as string)
               @Html.Hidden("productid", item.ProductID as string)
               @Html.TextBox("qty", item.Quantity)
               @Html.Hidden("unitrate", item.Rate)
               <input type="submit" value="Update" />
         }

在第一次发布时,我得到了这样的网址

http://localhost:61110/Shopping/Index1?UserID=Admin1

但是第二次,发布后我得到了这样的网址

http://localhost:61110/Shopping/Index1

如何在发布表单时始终获取查询字符串值。
我也试过这个mvc3: html.beginform search returning empty querystring

但是第二次发布时却无法获得查询字符 任何建议。

编辑:更新操作代码

[HttpPost]
        public ActionResult Update(string id, string productid, int qty, decimal unitrate)
        {
            if (ModelState.IsValid)
            {
                int _records = UpdatePrice(id,productid,qty,unitrate);
                if (_records > 0)
                {
                    return RedirectToAction("Index1", "Shopping",new { id = Request.QueryString["UserID"] });
                }
                else
                {
                    ModelState.AddModelError("","Can Not Update");
                }
            }
            return View("Index1");
        }

public int UpdatePrice(string id,string productid,int qty,decimal unitrate)
    {
        con.Open(); 
        var total = qty * unitrate;
        SqlCommand cmd = new SqlCommand("Update [Table_name] Set Quantity='" + qty + "',Price='" + total + "' where [User ID]='" + id + "' and [Product ID]='" + productid + "'", con);
        cmd.Parameters.AddWithValue("@total", total);
        return cmd.ExecuteNonQuery();
    }

1 个答案:

答案 0 :(得分:2)

您还需要在更新中将new { id = Request.QueryString["UserID"] }添加到RedirectToAction。