【问题标题】:Set Session Variable In MVC View and DateTimePicker在 MVC 视图和 DateTimePicker 中设置会话变量
【发布时间】:2016-07-20 02:35:34
【问题描述】:

如何在 DateTimePicker 中通过 Javascript 在 MVC 视图中设置 Session 值?

我有这个代码:

if('@Session["Data"]'==""){
  $('#datetimepicker').datepicker('setDate', startDate); @Session["Data"] = startDate;}
  else { $('#datetimepicker').datepicker('setDate', '@Session["Data"]'); }

这段代码工作正常,但代码

@Session["Data"] = startDate;

不工作。我如何在此处保存数据?

谢谢大家

【问题讨论】:

    标签: javascript asp.net-mvc


    【解决方案1】:

    您正在合并 javascript 和 c# 代码。

    您不能将 startDate (javascript) 设置为 Session (c#),因为 javascript 在客户端运行。

    如果 startDate 等于 DateTime.Now 它会对您有所帮助。

    <script>
        if('@Session["Data"]'===""){
            $('#datetimepicker').datepicker('setDate', new Date()); 
            @(Session["Data"] = DateTime.Now);
        } else {
            $('#datetimepicker').datepicker('setDate', '@Session["Data"]'); 
        }
    </script>
    

    【讨论】:

      【解决方案2】:

      剃刀视图中的 C# 代码在服务器中执行。但是您的 javascript 代码在客户端上执行。所以你不能像你的问题一样在你的 javascript 中设置一个 c# 变量值。

      您可以做的是对端点进行 ajax 调用并在那里设置会话中的值。所以创建一个action方法来处理ajax调用

      [HttpPost]
      public ActionResult SetDate(DateTime date)
      {
        // Set to session here
        return Json( new { Status="Success"});
      }
      

      现在从您的 javascript 代码中,使用 ajax 调用此端点并传递日期值。

      var startDate= "Read the date value here";
      $.post("YourControllerName/SetDate", { date = startDate},function(r){
          if(r.Status==="Success")
          {
            alert("Date is now in session")
          }
      });
      

      您可以考虑使用 Url.Action 辅助方法来生成操作方法的路径,而不是硬编码。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-10
        • 1970-01-01
        • 2015-03-11
        • 2021-04-09
        • 1970-01-01
        • 2015-04-12
        • 2011-08-24
        • 2015-04-09
        相关资源
        最近更新 更多