2

私は MVC 4 ホットタオル テンプレートを使用しています。現在、_viewStart.cshtml がある MVC の方法で解決しています。

@{
if (User.Identity.IsAuthenticated)
{
    Layout = "~/Views/Shared/_Layout.cshtml";
    Page.Title = "Home1";
}
else
{
    Layout = "~/Views/Shared/_loginLayout.cshtml";
    Page.Title = "Home2";
}}

そしてindex.cshtmlで:

@using System.Web
@using System.Web.Optimization
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge, chrome=1" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="format-detection" content="telephone=no"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

<script type="text/javascript">
        if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
            var msViewportStyle = document.createElement("style");
            var mq = "@@-ms-viewport{width:auto!important}";
            msViewportStyle.appendChild(document.createTextNode(mq));
            document.getElementsByTagName("head")[0].appendChild(msViewportStyle);
        }
    </script>


    @if (@User.Identity.IsAuthenticated)
    {
    <div id="applicationHost">
        @Html.Partial("_splash")
    </div>

   @Scripts.Render("~/scripts/vendor");
        if(HttpContext.Current.IsDebuggingEnabled) {
            @Html.AntiForgeryToken()
            <script>
                window.userId = "@User.Identity.Name";
                console.log(window.userId);
            </script>
            <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="@Url.Content("~/App/main")"></script>

        } else {
            <!-- Remember to run the Durandal optimizer.exe to create the main-built.js  -->
            <script type="text/javascript" src="~/App/main-built.js"></script>
        }
    }
    else
    {
        <script src="~/Scripts/jquery-1.9.1.min.js"></script>

            <div id="login">
              <p>hello world</p>
            </div>
        }

ログイン用に別のviewmodelユーザーを作成しました:

define(['services/logger'], function (logger) {
    var vm = {
        activate: activate(),
        userName: ko.observable(),
        password: ko.observable()
    };

    return vm;

    //#region Internal Methods
    function activate() {
        logger.log('login View Activated', null, 'login', true);
        return true;
    }
    //#endregion
});

ログインビューを作成しました:

<section>
    <h2>My login model without content yet</h2>
</section>

(私はこのビューでビューモデルを使用していないことを知っていますが、テスト専用です)

Durandal で同じ機能を実行するにはどうすればよいですか? それは可能ですか?

嫌いではありません。シングルページアプリケーションとデュランダル + Breeze.js + ノックアウトは初めてです。

4

1 に答える 1