【问题标题】:Call a controller method from a View in a proper way以正确的方式从视图中调用控制器方法
【发布时间】:2013-07-26 00:24:59
【问题描述】:

正如标题中提到的那样。我从视图中调用控制器方法的最佳方法是什么。 ViewBag、HTMLHelper ...?

【问题讨论】:

    标签: asp.net asp.net-mvc-4 view controller


    【解决方案1】:

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

    这里是例子

    http://www.codeproject.com/Articles/41828/JQuery-AJAX-with-ASP-NET-MVC

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

    1. 用户请求页面

      /首页/索引

    2. ASP MVC 服务器将请求发送到路由。默认路由在 global.aspx 文件中。
    3. 路由调用适当的控制器/动作。
    4. Action 运行服务器代码并可选择将数据发送到视图。
    5. 视图模板被填写,HTML/css/javascript被发送到客户端。
    6. 在浏览器上加载页面或用户点击后,您可以将 ajax 请求发送回服务器

    【讨论】:

      【解决方案2】:

      您只需将其设为 ActionResult。此外,如果您使用的是 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);
               }
      
      });
      

      注意:

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

      【讨论】:

        【解决方案3】:
        @Html.ActionLink("LinkText", "ActionName", "ControllerName")
        

        【讨论】:

          猜你喜欢
          • 2018-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-27
          相关资源
          最近更新 更多