如何在表单加载后动态传递从ajax调用中隐藏的值

时间:2017-05-23 14:41:27

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

我是ASP.Net MVC的初学者,我被困在一个地方。所以,我有几个领域和一个drodpown形式。基于下拉列表我需要发出ajax请求 获取整个datettime对象。 此外,当我得到日期时间时,我不希望用户看到提取的日期时间。但我希望能够在表单提交时访问它。简而言之。

  1. 更改下拉菜单 - 完成
  2. 在更改时发出ajax请求 - 完成
  3. 获取日期时间(不要在UI上显示)
  4. 在表单提交上发送所有表单详细信息以及提取的日期时间。
  5. 以下是我的新手尝试

    型号:

    public class PaymentFormMV
    {
         // some other fields
         public DateTime? Dte { get; set; }
    }
    

    窗口小部件控制器

    public JsonResult GetDate(int selectedUnitType)
    {
        DateTime result = MoveInHelper.GetDateTime(selectedUnitType);
        // result is of type datetime
        return Json(result, JsonRequestBehavior.AllowGet);
    }
    

    JS FIle:

    Ajax Call:
          $.ajax({
            type: 'GET',
            url: '/Widget/GetDate',
            data: { selectedUnitType: selectedUnitType},
            contentType: "application/json; charset=utf-8",
            success: function (data) {
            I am getting the data here SUCCESSFULLY
                ***WHAT TO DO HERE***
            },
            error: function () {
                DisplayError('Failed to load the payment tab.');
            }
        });
    }
    

    CSHTML文件:

    @PaymentFormMV
    // What HTMLhelper to put here
    

    在旁注:如果我打开一个表格并且我已经有了一些价值,那就说ID,我想把它作为隐藏发送,然后我做下面的事情

    @Html.HiddenFor(m=>m.Id)
    

    并在formsubmit上我可以获取ID值。

    但我的案例是I get the value dynamically after the form is loaded。所以,我很困惑如何更新可能是一个隐藏的DOM元素,可以将datetime对象接收到表单提交。请帮帮我,我迷失了。

1 个答案:

答案 0 :(得分:0)

将数据传递到隐藏字段,在表单提交时接收

首先,初始化一个隐藏的输入

@Html.Hidden("Dte")

并且您的ajax函数成功,将日期值传递给隐藏字段

  success: function (data) {
     $("#Dte").val(data); 
    }

您的表单提交操作,获取值,如果您的操作期望模型,它将自动检测该值,如果没有,您可以使用FormCollection [“输入名称在这里”]获取它, 这个将返回您传递的输入名称的值

var thehiddendate = DateTime.Parse(formCollection["Dte"])