【问题标题】:How to load angularjs from MVC view and pass data to angularjs controller?如何从 MVC 视图加载 angularjs 并将数据传递给 angularjs 控制器?
【发布时间】:2019-02-22 17:02:37
【问题描述】:

我有一个 angularjs MVC 应用程序,该应用程序将表单发布到不同的域,并且回调作为纯 http 帖子返回到 MVC 控制器功能。当回调回来并加载视图时,它不会运行绑定到视图的 angularjs 控制器。我们如何加载 angularjs 并使用控制器中的数据? 谢谢!

[System.Web.Http.HttpPost]
public ActionResult Callback()
{
   return View("CallbackView");
}

CallbackView.cshtml

<div ng-controller="CallbackCtrl">
</div>

<script>
    //How to load angularjs?
    //How to read the http post data and use it in the CallbackCtrl?
</script>

【问题讨论】:

    标签: angularjs asp.net-mvc


    【解决方案1】:

    只有当您绑定控制器的div(或者更好的是,它的父元素之一)具有ng-app 指令时,AngularJS 才会加载。

    读取发布数据的一种方法是在控制器方法中将其序列化为 JSON,然后将其放入隐藏的输入元素中,例如:

    &lt;input id="form-data" type="hidden" value="@model.MyFormData" /&gt;

    从这里您可以简单地使用 jQueryLite(包含在 AngularJS 中)来提取值。这当然不是唯一的方法,只是立即想到的方法。

    【讨论】:

    • 我看到 angularjs 已加载,因为父布局有 ng-app。但是如何在加载视图时让它运行控制器 CallbackCtrl 呢?我可以直接读取 CallbackCtrl 中的帖子数据吗?谢谢!
    • 正如我在您的另一个问题中所建议的,向控制器添加生命周期挂钩将有助于深入调试。可能是您的控制器正在工作,而问题出在其他地方。
    • 这里没有显示很多代码——如果控制器不工作,可能只是因为你实际上没有将它命名为CallbackCtrl。如果您明确地将其放在 ASP.NET MVC 视图模板中的某个位置,则只能读取发布数据。该信息不会像在网络表单时代那样自动插入到页面中。您可以使用我建议的技术或类似的技术来使用控制器中发布的数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2015-08-23
    • 2020-06-22
    • 1970-01-01
    • 2016-08-11
    相关资源
    最近更新 更多