【发布时间】:2014-01-15 02:38:06
【问题描述】:
我正在与 Angular 进行斗争,以使其在 ng-view 之外包含部分 cshtml 视图。
这是我的主要观点:
<div class="container">
<div class="header">
<div class="loginView">
<div ng-include="Home/Template/login"></div>
</div>
</div>
</div>
<div class="container">
<div ng-view></div>
</div>
这是我的部分 Login.cshtml:
<form name="login" ng-controller="LoginCtrl" class="form-inline">
<div class="form-group"><input type="text" name="loginName" class="form-control input-sm" placeholder="Brugernavn" oninvalid="this.setCustomValidity('Indtast brugernavn')" ng-model="UserData.LoginName" ng-required="true"></div>
<div class="form-group"><input type="text" name="password" class="form-control input-sm" placeholder="Kodeord" oninvalid="this.setCustomValidity('Indtast kodeord')" ng-model="UserData.Password" ng-required="true"></div>
<div class="form-group">
<button class="btn btn-primary btn-sm" ng-click="Login()" ng-disabled="login.password.$error.required || login.loginName.$error.required">Login</button>
</div>
</form>
我使用 mvc 返回对 url 调用的特定部分视图,如下所示:
public ActionResult Template(string id)
{
switch (id.ToLower())
{
case "login":
return PartialView("~/Views/Account/Partials/Login.cshtml");
case "register":
return PartialView("~/Views/Account/Partials/Register.cshtml");
case "main":
return PartialView("~/Views/Main/MainPage.cshtml");
default:
throw new Exception("template not known");
}
}
基本上,我相信 ng-include 应该调用 url ,它将返回 html 到将包含在页面上的内容。但事实并非如此,模板方法根本没有被调用。我当然可以在母版页上包含整个模板,但稍后登录后我想用登录的用户数据模板替换这个模板。
知道如何解决这个问题吗?
【问题讨论】:
-
刚刚用完全相同的 url 对其进行了测试,一切正常,看起来 ng-include 想要直接链接到 html 页面而不是先通过服务器
-
真的,您需要做的就是使用内置帮助器
Html.Partial("_PartialName")- 然后您可以在部分内部使用{{angularData}},只要您的角度控制器在首页中定义了这些值.我认为通过 ng-include 路线,您可能会为自己复杂化。请记住,Angular 是为在单个页面上使用 API 服务而构建的。 MVC 和 Razor 是一种已经具备所有这些功能的全功能语言。将它们结合起来有点挑剔。恕我直言,没必要,但它就是这样。
标签: asp.net-mvc angularjs razor