【问题标题】:ASP MVC: Ajax change textbox value which is implemented in a different viewASP MVC:Ajax 更改在不同视图中实现的文本框值
【发布时间】:2017-05-26 21:06:21
【问题描述】:

我有一个名为Index 的视图,以及两个部分视图_Grid_Project。 partialview _Project 是一个弹出窗口,一旦用户单击按钮添加数据,它就会可见,就像添加用户一样。 现在,一旦用户单击_Project 弹出窗口内的按钮,我正在尝试更改部分视图_Grid 内的文本框值。

_Grid 局部视图内部:

<input id="CurrentOrder" type="hidden" value=""/>

一旦按下弹出窗口内的按钮(partialview _Project),在 javascript 中:

function AddTimeReg() {
//code 
if (date && shopdoc && ((convertedStartTime && convertedEndTime) || hours)) {
        $.ajax({
// more code 
// change the value of textbox
 $("#Grid #CurrentOrder").val(salesorder);

输入类型在名为 Grid 的 div 中的 Grid 局部视图内。

我到底做错了什么? 我希望文本框有 salesorder 的值。

编辑:对于想要完整代码的人: Javascript 文件:

function AddTimeReg() {

    var salesorder = $("#SalesOrder").val();
    var shopdoc = $("#Shopdoc").val().trim();
    var starttime = $("#StartTime").val().trim()
    var convertedStartTime = starttime.replace(/\./g, ':')
    var endtime = $("#EndTime").val().trim()
    var convertedEndTime = endtime.split('.').join(':');

    var hours = Math.round(Number($("#Hours").val().trim().replace(DecimalSeparator(), '.')) * 100 / 100);
    var date = $("#Date").val().trim();
    var info = $("#Info").val().trim();
    var timeRegLineNr = 0;
    var isEditing = $("#Project #Date").prop('disabled');
    if (isEditing) {
        timeRegLineNr = $($(".highlight")[0]).children(".td-TimeRegLineNr").text();
    }

    if (date && shopdoc && ((convertedStartTime && convertedEndTime) || hours)) {
        $.ajax({
            type: 'post',
            url: appPath + '/TimeReg/ShopDoc',
            data: {
                regDate: date, salesOrder: salesorder, shopDoc: shopdoc, startTime: convertedStartTime, endTime: convertedEndTime,
                hours: hours, info: info, timeRegLineNr: timeRegLineNr
            },
            success: function (response) {
                if (response.success) {
                    var mySessionVariable = shopdoc
                    ClosePopup();
                    ShowGrid();
                    $("#Grid #CurrentOrder").val(salesorder);
                    var timerId = setTimeout(function () {
                        $("#dialog #TimerId").val("");
                        $("#dialog").modal("hide");
                    }, timeToClose);

                    $("#dialog #TimerId").val(timerId);
                }
                $("#dialog .modal-body").html(response.message);
                $("#dialog #dialog-title").html(response.title);
                $("#dialog").modal("show");


            },
            error: function (response) {
                $("#dialog .modal-body").html(msgErrorDuringRequest);
                $("#dialog #dialog-title").html(errorTitle);
                $("#dialog").modal("show");

            }
        });

    }
}

内部索引:

<div id="Main" style="@mainDisplay">
    <div style="margin:10px;">
        <input id="regDate" type="@regDateType" value="@DateTime.Now.ToShortDateString()" />
        <input type="button" class="btn btn-default" value="@Resources.Ok" onclick="ShowGrid()">
    </div>
    <div id="Grid">
        @if ((bool)ViewBag.ShowGrid)
        {
            Html.RenderAction("Grid", new { login = (string)ViewBag.Login, regDate = DateTime.Now });
        }

在 _Grid 局部视图中有文本框:

<input id="CurrentOrder" type="hidden" value=""/>

在项目部分视图中,有一个调用 javascript Action 的按钮

【问题讨论】:

  • 请把剩下的代码贴出来好吗?
  • 我理解你的问题是正确的,在提交 modal(_Project partial view) 之后,你需要进行 ajax 调用以再次绑定你的网格。
  • $("#CurrentOrder").val(salesorder);应该这样做。除非 1. 您有多个名为 CurrentOrder 的项目。 2. CurrentOrder 在页面上实际上并不存在。 3. 您的模态框位于 IFrame 中
  • 你输入的CurrentOrder是隐藏字段不是文本框吗?
  • @KevDevMan 在局部视图_Project上调用javascript函数,而在_Grid局部视图中实现隐藏字段

标签: javascript jquery asp.net asp.net-mvc


【解决方案1】:

你有两个部分。调用第一个部分然后如果调用其他部分,你可能会使用 ajax 调用。

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 1970-01-01
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    • 1970-01-01
    相关资源
    最近更新 更多