Angular ng-include cshtml页面

Tim*_*sen 19 asp.net-mvc razor angularjs

我正在与角斗争以使其成为包含在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>
Run Code Online (Sandbox Code Playgroud)

这是我的部分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>
Run Code Online (Sandbox Code Playgroud)

即时通讯使用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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

基本上我会相信ng-include应该调用url,这将返回将被包含在页面上的html.但那不是发生的事情,根本没有调用Template方法.我可以在主页上包含整个模板,但是稍后在登录后我想用登录的用户数据模板替换这个模板.

知道如何解决这个问题吗?

edd*_*iec 24

ng-include计算表达式,确保如果要直接加载路径,则使用两组引号.

<div ng-include="'Home/Template/login'"></div>
Run Code Online (Sandbox Code Playgroud)

  • 真的很容易犯错误,但让ng-includes更加强大.乐意效劳! (2认同)

tap*_*osh 15

要调用在asp.net局部视图mvc5使用angular js,写这种方式:

<ng-include src="'@Url.Action("method_name", "Controller_name")'"></ng-include> 
Run Code Online (Sandbox Code Playgroud)

它还记得你的控制器方法必须以这种方式返回:

 return PartialView("~/Views/Angular/TableAdd.cshtml");
Run Code Online (Sandbox Code Playgroud)

快乐的编码.