C# 如何在表单加载后通过ajax调用动态传递隐藏加载的值

C# 如何在表单加载后通过ajax调用动态传递隐藏加载的值,c#,asp.net,ajax,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,Ajax,Asp.net Mvc,Asp.net Mvc 5,我是ASP.NETMVC的初学者,我被困在一个地方。所以,我有两个字段和一个drodpown。基于下拉列表,我需要向 获取整个datettime对象。 另外,当我获取日期时间时,我不希望用户看到获取的日期时间。但我希望能够在表单提交时访问它。简而言之 更改下拉列表-完成 更改时发出ajax请求-完成 获取日期时间(不显示在UI上) 在表单提交时,发送所有表单详细信息以及获取的日期时间 下面是我的新手尝试 型号: public class PaymentFormMV { // some

我是ASP.NETMVC的初学者,我被困在一个地方。所以,我有两个字段和一个drodpown。基于下拉列表,我需要向 获取整个datettime对象。 另外,当我获取日期时间时,我不希望用户看到获取的日期时间。但我希望能够在表单提交时访问它。简而言之

  • 更改下拉列表-完成
  • 更改时发出ajax请求-完成
  • 获取日期时间(不显示在UI上)
  • 在表单提交时,发送所有表单详细信息以及获取的日期时间
  • 下面是我的新手尝试

    型号:

    public class PaymentFormMV
    {
         // some other fields
         public DateTime? Dte { get; set; }
    }
    
    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.');
            }
        });
    }
    
    @PaymentFormMV
    // What HTMLhelper to put here
    
    小部件控制器

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

    public class PaymentFormMV
    {
         // some other fields
         public DateTime? Dte { get; set; }
    }
    
    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.');
            }
        });
    }
    
    @PaymentFormMV
    // What HTMLhelper to put here
    
    CSHTML文件:

    public class PaymentFormMV
    {
         // some other fields
         public DateTime? Dte { get; set; }
    }
    
    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.');
            }
        });
    }
    
    @PaymentFormMV
    // What HTMLhelper to put here
    
    另一方面:如果我打开一个表单,我已经有了一些值,比如说ID,我想把它隐藏起来,然后我会做如下的事情

    @Html.HiddenFor(m=>m.Id)
    
    在formsubmit上,我可以获取ID值


    但是我的情况是
    我在加载表单后动态获取值
    。因此,我感到困惑如何更新可能是一个隐藏的DOM元素,它可以将datetime对象作为表单submit上的接收对象。请帮助我,我迷路了。

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

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

    @Html.Hidden(“Dte”)

    如果ajax函数成功,则将日期值传递给隐藏字段

      success: function (data) {
         $("#Dte").val(data); 
        }
    
    您的表单提交操作,获取值,如果您的操作需要模型,它将自动检测值,如果没有,您可以使用FormCollection[“此处输入名称”]获取值, 这个函数将返回所传递输入名称的提交值


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

    您可以将表单序列化并通过Ajax发送给控制器,或者如果您接受回帖,您只需创建一个表单并将输入映射到控制器操作,其中包含它接受的每个输入名称的所有参数。这有什么意义?为什么不在提交表单时在POST方法中获取
    DateTime
    值?@StephenMuecke:Oh。。你的意思是我可以在HTTPPOST控制器操作方法中直接获取后端本身的datetime,因为我不打算向用户显示datetime。这完全有道理。我试试这个。非常感谢。HTML帮助程序版本。它与模型没有很强的关联,对吗?我是否需要为强类型隐藏输入元素添加“For”关键字?