Asp.net 以适当的方式从视图调用控制器方法

Asp.net 以适当的方式从视图调用控制器方法,asp.net,asp.net-mvc-4,view,controller,Asp.net,Asp.net Mvc 4,View,Controller,正如标题中提到的。我知道从视图调用控制器方法的最佳方式是什么。ViewBag,HTMLHelper…?当用户请求页面时,网页首先使用路由找到合适的控制器。然后完成所有服务器端C#代码。然后它填充html模板并将html发送给用户。无法从服务器上的视图调用控制器。但当视图页面在客户端浏览器上运行时,您可以对服务器进行ajax调用,然后将数据发送回控制器 这是一个例子 让我缩小浏览器所采取的步骤 用户请求页面 /主页/索引 ASP MVC服务器将请求发送到路由。默认路由位于global.aspx文

正如标题中提到的。我知道从视图调用控制器方法的最佳方式是什么。ViewBag,HTMLHelper…?

当用户请求页面时,网页首先使用路由找到合适的控制器。然后完成所有服务器端C#代码。然后它填充html模板并将html发送给用户。无法从服务器上的视图调用控制器。但当视图页面在客户端浏览器上运行时,您可以对服务器进行ajax调用,然后将数据发送回控制器

这是一个例子

让我缩小浏览器所采取的步骤

  • 用户请求页面

    /主页/索引

  • ASP MVC服务器将请求发送到路由。默认路由位于global.aspx文件中
  • 路由呼叫相应的控制器/操作
  • 操作运行服务器代码并可选地将数据发送到视图
  • 视图模板被填充,HTML/css/javascript被发送到客户端
  • 在浏览器上加载页面或用户单击后,可以将ajax请求发送回服务器

  • 你只需要让它成为一个行动的结果。此外,如果您使用的是Ajax POST,则需要使用HttpPost属性标记该操作。试试这个:

    [HttpPost]
    public ActionResult test()
    {
        return Content("It works");
    }
    
    您可以在view.cshtml中添加javascript标记

    // Sample Ajax Request.   
    $.ajax({
               url: '@Url.Action("test", "Home")',
              data: {dealerID: dealerID},
              type: 'POST',
              success: function(data) {
                alert(data);
             }
    
    });
    
    注:

    • Action具有控制器/操作参数。首先应该是“ActionName”,然后是“ControllerName”
    • 对于Url.Action,如果控制器类是“HomeController”,那么您只需要“Home”
    • 请求成功时的JQuery选项显示警报。-应该是成功的:函数(数据){}
    @Html.ActionLink("LinkText", "ActionName", "ControllerName")