不要尝试Html.Action
像方法调用那样使用,而是使用Html.RenderAction
并使用该操作将任何必要的 JavaScript 转储到您的页面。例如
AuthController.cs
public class Auth : Controller
{
/* snip */
[ChildActionOnly]
public ActionResult Login()
{
return View(/* model? */);
}
}
~/Views/Auth/Login.cs
<script>
var auth = @whateverinformation;
</script>
原始视图
@{ Html.RenderAction("Login", "Auth"); }
<script>
user = auth.details;
</script>
现在/Auth/Login
可以放置在任何页面上,并且内容包含在服务器级别(而不是 AJAX 的补充)
如果这对您不起作用,请考虑制作一个显示信息的 HTML 帮助程序,而不是尝试像普通方法那样使用控制器操作。就像是:
public static IHtmlString Auth_Login(Htmlhelper htmlhelper)
{
String response;
/* assign response */
return new HtmlString(response); /* or maybe MvcHtmlString */
}
实施的:
<script>
var response = @Html.Auth_Login();
user = response.details;
</script>