Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何调用控制器';在不刷新网页的情况下使用的方法?_Javascript_C#_Asp.net Core - Fatal编程技术网

Javascript 如何调用控制器';在不刷新网页的情况下使用的方法?

Javascript 如何调用控制器';在不刷新网页的情况下使用的方法?,javascript,c#,asp.net-core,Javascript,C#,Asp.net Core,我想知道是否有一种方法可以在不刷新整个页面的情况下调用控制器的方法 我这里的问题是,我有一个web表单,看起来像这样: <form asp-action="AskDataGridHistByDay" method="post"> <div class="row"> <div class="col-4"> <input type="text" name="datefilter" id="datefilter"

我想知道是否有一种方法可以在不刷新整个页面的情况下调用控制器的方法

我这里的问题是,我有一个web表单,看起来像这样:

<form asp-action="AskDataGridHistByDay" method="post">
    <div class="row">
        <div class="col-4">
            <input type="text" name="datefilter" id="datefilter" />
         </div>
         <div class="col-7"></div>
         <div class="form-check col-auto">
             <button type="submit" class="btn btn-primary">Calculer</button>
         </div>
    </div>
</form>
[HttpPost]
public IActionResult AskDataGridHistByDay(string datefilter)
{
     //Here I'm setting a static variable with the data from my model
     string datestart = datefilter.Substring(6, 4) + datefilter.Substring(3, 2) + datefilter.Substring(0, 2);
     string dateend = datefilter.Substring(19, 4) + datefilter.Substring(16, 2) + datefilter.Substring(13, 2);
     dataGridHistByDay = WebServiceCall.getInstance().GetDataGridByDayAsync(datestart, dateend).Result;
      return View("Index");
}
我知道我要返回一个视图,所以它必须刷新页面索引,但我无法创建一个不返回任何内容的方法,所以我不得不告诉他返回一个视图,因为我没有一个名为AskDataGridHistByDay的cshtml文件

您知道另一种方法将参数发送到控制器,使其不会调用或刷新我的视图吗?
Javascript中是否还有从控制器调用方法的方法?

是的,您可以。您可以对控制器操作进行AJAX调用。您只需要注意操作方法将位于的URL以及将返回的数据。如果您的操作返回JSON结果(如果该结果是MVC应用程序),则效果会更好。如果这是一个Web API,默认情况下它将返回JSON


参考官方演示,请按照以下步骤进行操作:

  • 控制器动作

    [HttpPost]
    public IActionResult AskDataGridHistByDay(string datefilter)
    {
        return Ok("Success");
    }
    
  • 看法

    <form>
        <div class="row">
            <div class="col-4">
                <input type="text" name="datefilter" id="datefilter" />
            </div>
            <div class="col-7"></div>
            <div class="form-check col-auto">
                <input id="AskDataGridHistByDay" class="btn btn-primary" type="button" value="Calculer" />
            </div>
        </div>
    </form>
    @section Scripts{ 
        <script type="text/javascript">
            $(document).ready(function () {
                $("#AskDataGridHistByDay").click(function () {
                    $.ajax({
                        type: 'POST',
                        url: '/Home/AskDataGridHistByDay',
                        data: { datefilter: $("#datefilter").val() },
                        success: function (result) {
                            alert(result);
                        }
                    });
                });                  
            })
        </script>
    }
    
    
    @节脚本{
    $(文档).ready(函数(){
    $(“#AskDataGridHistByDay”)。单击(函数(){
    $.ajax({
    键入:“POST”,
    url:“/Home/AskDataGridHistByDay”,
    数据:{datefilter:$(“#datefilter”).val()},
    成功:功能(结果){
    警报(结果);
    }
    });
    });                  
    })
    }
    

  • 您需要使用ajaxIt最好不要将其视为“调用方法”。这不是怎么回事。您必须向调用您的操作的路由发出请求。没有请求,什么事情也不会发生。但是,通过使用AJAX,您可以发出请求,而不会导致页面在浏览器中刷新。