MVC控制器多个视图和路由问题

时间:2016-12-28 10:52:33

标签: c# asp.net-mvc asp.net-mvc-4 razor

目前我们有视图名称'自存'和一个控制器来支持它。 该视图是一个独立页面,使用部分视图构建: 例 文件夹名称:SelfDeposit 主视图文件:_LayoutSelfDeposit.cshtml 部分视图:Register.cshtml,Pending.cshtml等。

这是主要观点:     

<html dir="@(System.Globalization.CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft ? "rtl" : "ltr")">
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
    @Styles.Render("~/Content/SelfDeposit_css")
    @Scripts.Render("~/bundles/scripts")
    @Scripts.Render("~/bundles/bootstrap")
    @Scripts.Render("~/bundles/jqueryval")
    @if (System.Globalization.CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft)
    {
        @Styles.Render("~/Content/BootstapRtl_css")
    }
    <link href="https://fonts.googleapis.com/css?family=Montserrat:400,700|PT+Sans" rel="stylesheet">
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-12 text-center">
                <a href="#" class="logo"></a>
            </div>
        </div>
    </div>
    @RenderBody()
    <div class="container text-center">
        <img src="~/Content/SelfDeposit/footer-icons.png" class="img-responsive footer-icons" />
    </div>
    @Html.Partial("ThirdPartyPixels/GoogleTagManager")
</body>
</html>

这是加载它开始的控制器:

 private readonly ForexDbContext _Db = DbLoader.GetDb();
    // GET: SelfDeposit
    public ActionResult Index()
    {
        return RedirectToAction(nameof(this.Register));
    }
    public async Task<ActionResult> Register()
    {
        ViewBag.CountryId = await GetCountiesAsync();
        var model = new SelfDepositRegistrationViewModel { };
        if (TempData[Main.LEAD_REG_DETAILS_FOR_OPEN_ACCOUNT] != null && TempData[Main.LEAD_REG_DETAILS_FOR_OPEN_ACCOUNT] is LeadRegistered)
        {
            var leadRegistered = TempData[Main.LEAD_REG_DETAILS_FOR_OPEN_ACCOUNT] as LeadRegistered;
            ViewBag.LeadRegisteredDetails = leadRegistered;
            model.FirstName = leadRegistered.FirstName;
            model.LastName = leadRegistered.LastName;
            model.Email = leadRegistered.Email;
            model.PhoneNumber = leadRegistered.Phone;
            model.PhoneCountryCode = leadRegistered.PhoneCountry;
        }

        return View(model);
    }

我想要实现的是拥有多个视图,每个视图具有不同的布局和css,但保持控制器相同,而不是每次添加视图时都不复制它。

我尝试过以下操作:在主文件夹下添加一个文件夹: SelfDeposit - &GT;布局1 - &GT; _LayoutSelfDeposit.cshtml 但由于我无法解决路由问题,因此无效。

有没有人有想法? 感谢

1 个答案:

答案 0 :(得分:4)

要返回其他视图,您可以指定要返回的视图的名称,并按如下方式建模:

return View("ViewName", yourModel);

要获取视图的绝对路径,请使用:

return View("~/Views/FolderName/ViewName.cshtml");

或者您可以制作部分视图,并可以返回:

return PartialView("PartialViewName", Model);