0

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

4

3 回答 3

0
@Html.ActionLink("LinkText", "ActionName", "ControllerName")
于 2013-07-26T07:19:53.580 回答
0

当用户请求一个页面时,网页首先使用路由找到合适的控制器。然后它完成所有服务器端 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 运行服务器代码,并可选择将数据发送到 Views。
  5. 填写视图模板并将 HTML/css/javascript 发送到客户端。
  6. 在浏览器上加载页面后或用户单击后,您可以将 ajax 请求发送回服务器
于 2013-07-26T04:55:21.697 回答
0

您只需要将其设为 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 选项显示警报。-- 应该是成功的:函数(数据){}。
于 2013-07-26T07:16:49.833 回答