javascript - 使用下拉列表中选定的值更新 HTML.HiddenFor 值

标签 javascript jquery html asp.net-mvc-5 onchange

我有一个简单的销售信息形式,用户可以编辑评论和原因,然后使用 SaveChanges() 函数将数据提交回数据库。 我需要更新包含 ID 号的字段。我有一个简单的下拉列表(由viewbag填充),当用户进行更改时,我想更新hiddenfor字段中的ID号,以便可以在保存时将其发回。 我的代码如下:

编辑器模板

   <tr>
@Html.HiddenFor(modelItem => modelItem.ID)
@Html.HiddenFor(modelItem => modelItem.tblTaggingGroupID)
@Html.HiddenFor(modelItem => modelItem.FinYear)
@Html.HiddenFor(modelItem => modelItem.FinWeek)
@Html.HiddenFor(modelItem => modelItem.WeekDay)
@Html.HiddenFor(modelItem => modelItem.Segment)
@Html.HiddenFor(modelItem => modelItem.NetSales)
@Html.HiddenFor(modelItem => modelItem.SwellSales)
@Html.HiddenFor(modelItem => modelItem.SpikeSales)
@Html.HiddenFor(modelItem => modelItem.BaseSales)
@Html.HiddenFor(modelItem => modelItem.tblTaggingReasonID)
<td>
    @switch (Model.WeekDay)
    {
        case 1:
            @:Sunday
            break;
        case 2:
            @:Monday
            break;
        case 3:
            @:Tuesday
            break;
        case 4:
            @:Wednesday
            break;
        case 5:
            @:Thursday
            break;
        case 6:
            @:Friday
            break;
        case 7:
            @:Saturday
            break;
        default:
            break;
    }
</td>
<td>
    @Html.DisplayFor(modelItem => modelItem.Segment)
</td>

<td>
    @Html.DisplayFor(modelItem => modelItem.NetSales)
</td>
<td>
    @Html.DisplayFor(modelItem => modelItem.SwellSales)
</td>
<td>
    @Html.DisplayFor(modelItem => modelItem.SpikeSales)
</td>
<td>
    @switch (Model.Recurring)
    {
        case true:
            Model.Recurring.ToString();
            break;
        case false:
            Model.Recurring.ToString();
            break;
        default:
            break;
    }
    @Html.EditorFor(modelItem => modelItem.Recurring)
</td>

<td>@Html.DropDownListFor(modelItem => modelItem.tblTaggingReasonID, (SelectList)ViewBag.Reasons, "Please Select")</td>
<td>
    @Html.EditorFor(modelItem => modelItem.Comment, new { @class = "Commenttxt" })
</td>

Controller :

        public ActionResult Index()
    {
        var SelectedID = Convert.ToInt32(Session["_SessionSelectGroupID"]);
        var SelectedYear = Convert.ToInt32(Session["_SessionSelectFinYear"]);
        var SelectedWeek = Convert.ToInt32(Session["_SessionSelectFinWeek"]);
        var tblTaggingGroupInstances = db.tblTaggingGroupInstances.Include(t => t.tblTaggingGroup);

         ViewBag.Reasons = new SelectList(db.tblTaggingReasons,"ID","UpliftReason");

        return View(tblTaggingGroupInstances.Where(t => t.tblTaggingGroupID == SelectedID && t.FinYear == SelectedYear && t.FinWeek == SelectedWeek).ToList());
    }
    [HttpPost]
    public ActionResult Index(List<tblTaggingGroupInstance> model)
    {
        foreach (var record in model)
        {
            db.Entry(record).State = EntityState.Modified;
        }
        db.SaveChanges();
        return RedirectToAction("Details");
    }

我假设这可以通过一些简单的 JQuery 或 Javascript 来完成,但是到目前为止我尝试过的所有内容都失败了?

最佳答案

无需使用 JavaScript 来更新隐藏的输入。相反,只需直接绑定(bind)到属性

@Html.DropDownList(m => m.tblTaggingReasonID, (SelectList)ViewBag.Reasons, "Please Select")

并从 View 中删除隐藏的输入。

关于javascript - 使用下拉列表中选定的值更新 HTML.HiddenFor 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35453417/

相关文章:

javascript - AJAX 不发送数据,我不能使用 POST 结果

javascript - 在不可视化的情况下删除数据中的空间

jquery - jquery 中的 "What Tag did I select?"

html - Chrome 浏览器不显示 UTF-8 字符

javascript - 如果出现错误,则阻止表单提交

javascript - 在 dygraphs 中的同一张图上绘制 customBars 和一条规则线

javascript - html php POSTing javascript整数数组

javascript - 构造JS数据的最佳方式jQuery多类多维数组

javascript - MVC中数据库查询后重新加载页面js

html - 使用纯 css 的条形图如何从主 div 添加文本