2016-12-28 15 views
1

現時点では、ビュー名 'Self Deposit'とそれを戻すコントローラーがあります。これがメインですRegister.cshtml、Pending.cshtmlなどMVCコントローラ複数のビューとルーティングの問題

: 例 フォルダ名:SelfDeposit メインビューファイル:_LayoutSelfDeposit.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 - > Layout1 - > _ LayoutSelfDeposit.cshtml しかし、私は、ルーティングの問題を把握できなかったので、それは動作しませんでした。

アイデアはありますか? おかげ

+0

あなたが見ているのされていますビューの名前を効果的に動的にするために 'return View(viewName、model)'の行に沿って何かを実行しますか?クエルチング、DBなどから名前を見ることができます。私はフォームの旅の流れを制御するためにクッキーを使用して同様のものを実装しました。 – G0dsquad

答えて

4

は、次のようにあなたが返すようにしたいとモデルビューの名前を指定することができ、別のビューを返すために:

return View("ViewName", yourModel); 

は、ビューの絶対パスを取得するには、使用:

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

それとも、部分図を作ることができると同様に返すことができます。

return PartialView("PartialViewName", Model); 
+1

ありがとうございます!それは助け! –

関連する問題