【问题标题】:How to get the textbox changed value for Update in @Html.ActionLink in MVC如何在 MVC 中的 @Html.ActionLink 中获取文本框更改的更新值
【发布时间】:2012-10-18 10:22:40
【问题描述】:

我正在尝试从文本框中获取 textchanged 值以在我的控制器中更新。
查看

  @Html.TextBox("Quantity", item.Quantity)

  <a  href="@Url.Action("Update", "Shopping", new { id = Request.QueryString["UserID"], productid = item.ProductID, qty ="Quantity", unitrate = item.Rate })">     
<img alt="updateitem" style="vertical-align: middle;" height="17px" src="~/Images/product_updates_image.png"
 title="update" id="imgUpdate" />
</a>

在我的控制器中更新

 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");
                }
                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 [Cpecial_Shopping_Cart_tbl] Set Price='"+ total +"' where [User ID]='" + id + "' and [Product ID]='" + productid + "'", con);
        cmd.Parameters.AddWithValue("@total", total);
        return cmd.ExecuteNonQuery();
    }

我在@Html.ActionLink 中传递了数量变量的文本框名称。但是当文本框的值改变时,值不会传入其中。

编辑:

最初来自 DB 的文本框的值为 1。当我更改文本框的值时,它不会得到更新,即使在发布表单时也会更新相同的值。

【问题讨论】:

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


    【解决方案1】:

    您需要使用表单将值从视图发送 (POST) 到控制器。

    这是一个粗略的例子:

    @using (Html.BeginForm("Update", "Shopping", FormMethod.Post, new { @id = "myHtmlForm" }))
    {
        @Html.Hidden("id", Request.QueryString["UserID"]);
        @Html.Hidden("productid", item.ProductID)
        @Html.Hidden("unitrate", item.Rate)
    
        @Html.TextBox("qty", item.Quantity)
    
        <a href="javascript:document.getElementById('myHtmlForm').submit();">
            <img alt="updateitem" style="vertical-align: middle;" height="17px" src="~/Images/product_updates_image.png"
                title="update" id="imgUpdate" />
        </a>
    }
    

    【讨论】:

    • @Html.TextBox("qty", item.Quantity) 仅获取数据库值,而不是更改后的文本框值
    • 没有。那是一个文本框。当用户点击图片时,会提交修改后的文本框值
    • item.quantity 只获取模型中的值,而不是文本框中输入的文本
    • 起初它只取模型中的值。但是,当您提交表单时,它实际上会发布文本框中的任何值。
    猜你喜欢
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    相关资源
    最近更新 更多