繁体   English   中英

将数据从布局发送到控制器Asp.Net MVC

[英]Send data from layout to controller 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);
    }

问题是我确实单击了按钮,但没有看到任何更改,似乎该值仅在第一次到达控制器。 有人可以帮我吗?

它不是那样工作的。 您不能在服务器端保留多个不同请求的值。 也许您可以使用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);
    }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM