在MVC视图和DateTimePicker中设置会话变量

Set Session Variable In MVC View and DateTimePicker

本文关键字:设置 会话 变量 DateTimePicker MVC 视图      更新时间:2023-10-08

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

我有这个代码:

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

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

@Session["Data"] = startDate;

不起作用。如何在此处保存数据?

感谢所有

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

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

如果startDate等于DateTime。现在会对您有所帮助。

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

剃刀视图中的C#代码在服务器中执行。但您的javascript代码在客户端上执行。因此,您不能像问题中那样在javascript中设置c#变量值。

您可以做的是对端点进行ajax调用,并在那里设置会话中的值。因此,创建一个操作方法来处理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辅助方法来生成操作方法的路径,而不是硬编码。