2

我在 _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 搜索返回空查询字符串

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

编辑:更新操作代码

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

1 回答 1

2

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

于 2012-10-22T05:25:55.313 回答