2017-12-27 266 views
0

我有我的布局视图上我的导航栏的开关按钮,当我点击按钮,它改变了值,并将其发送到控制器:从布局将数据发送到控制器Asp.Net MVC

<input type="button" id="switchbutton" value="Weekend" style="color:blue" onclick="toggle(this)" > 

<script type="text/javascript"> 
    function toggle(button) { 
     switch (button.value) { 
      case "Weekend": 
       button.value = "Week"; 
       break; 
      case "Week": 
       button.value = "Weekend"; 
       break; 
     } 
     $.ajax({ 
      type: "POST", 
      url: "/Home/AjaxMethod", 
      data: '{param: "' + $(this).val() + '" }', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(response) { 
       alert("Return Value: " + response); 
      }, 
      failure: function(response) { 
       alert(response.responseText); 
      }, 
      error: function(response) { 
       alert(response.responseText); 
      } 
     }); 
    } 
</script> 

在控制器我收到该值并将其发送给执行函数的If语句,具体取决于接收到的值。

private string SwitchVal; 
[HttpPost] 
public string AjaxMethod(string param) 
{ 
    var d = string.Empty; 
    switch (param) 
    { 
     case "Weekend": 
      d = "Week"; 
      break; 
     case "Week": 
      d = "Weekend"; 
      break; 
    } 
    SwitchVal = d; 
    return d; 
} 

public JsonResult ModelsUpdate(string SwitchVal) 
{ 
    if (SwitchVal == "Weekend") 
    { 
     resultminDate = CalculateminDate(minDate, todayDay); 
    } 
    else 
    { 
     resultminDate = CalculateminDateWeek(minDate, todayDay); 
    } 

的问题是,我按一下按钮,我看不出有什么变化,它似乎只值到达控制器中的第一次。有人可以帮助我吗?

+0

私人'SwitchVal'变量将不会举行2个HTTP调用之间的数据。 – Shyju

+0

现在发生了什么?它是否正在进行ajax调用?你是否收到脚本错误? – Shyju

+0

“我没有看到任何变化”预期的变化是什么? – lucky

回答

1

它不这样工作。您无法在多个不同的请求中保存服务器端的值。也许你可以使用Session来执行它,但为什么不发布数据ModelsUpdate而不是AjaxMethod。在你的情况下,我无法理解AjaxMethod的目的。

public JsonResult ModelsUpdate(string SwitchVal) 
    { 
     if (SwitchVal == "Weekend") 
     { 
      resultminDate = CalculateminDate(minDate, todayDay); 
     } 
     else 
     { 
      resultminDate = CalculateminDateWeek(minDate, todayDay); 
     } 
     return Json(resultminDate); 
    } 

Ajax调用看起来像

$.ajax({ 
    type: "POST", 
    url: "/Home/ModelsUpdate", 
    data: '{SwitchVal: "' + $(this).val() + '" }', 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: function(response) { 
     alert("Return Value: " + response); 
    }, 
    failure: function(response) { 
     alert(response.responseText); 
    }, 
    error: function(response) { 
     alert(response.responseText); 
    } 
}); 
+0

嗨, 我做到了,我没有错误,但我的问题是仍然是一样的,当我点击按钮时,视图数据不会改变 –

+0

当请求成功完成时,您正在执行警报消息。你会期待什么? – lucky

+0

不,我有一个If语句返回值,该语句根据返回的值运行函数。请检查代码。 –

相关问题