2

以前にこの質問をしましたが、問題は、回答が 1 つしかなく、その回答が私が尋ねた質問に対するものではないことです。したがって、これを明確にするために、前もって、この質問が何ではないか:

同じプロジェクトで HYBRID、MVC、および Web フォームを使用したくありません。

1 つのマスター ページで 2 つのプロジェクトが並行して実行されていることを示すリンクを教えてもらえますか? 1 つのプロジェクトは、マスター ページを含む ASP.Net Web フォームです。もう 1 つのプロジェクトは、MVC Razor プロジェクトです。マスター ページは、.aspx ページと .cshtml ビューへのリンクを提供します。これらのプロジェクトは両方とも C# である必要があります。これがどのように機能するかを自分で確認するには、ソース コードをダウンロードできる必要があります。

答え #1 は、私が探している答えではありません。私の質問は非常に具体的です。

4

5 に答える 5

3

私の知る限り、それは2つの理由で不可能です。

  • アプリケーションの外部から.masterページを使用することはできません。これは、アプリケーションの一部である必要があります(ファイルとして、またはVirtualPathProviderトリックと組み合わせたライブラリの埋め込みリソースとして)。
  • .aspxページの.cshtmlレイアウトファイルをMasterPageFileとして使用できないのと同じように、.cshtmlの.masterページを使用することはできません。

したがって、既存の.masterページを直接再利用することはできないようです。

于 2012-05-25T16:02:27.743 に答える
2

これらは2つの異なるテクノロジーであるため、同じファイルを使用することはできません。WebFormsアプリケーション用のMasterPageと、同じように見えるMVCアプリケーション用のレイアウトが必要です。

MasterPage / Layoutに動的コンテンツがなく、単なるhtmlである場合は、それをファイルに入れて、MasterPageとLayoutファイルの両方を作成するスクリプトを作成できると思いますが、それだけの価値はないと思います。

于 2012-05-25T16:00:12.970 に答える
1

完全な情報源をお見せすることはできません。見せるために私のものではありません。しかし、私はあなたにこれを見せることができます。これは、WebFormマスターページを使用してかみそりビューをレンダリングするために使用する部分です。

--- razorview.aspx ---

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <% Html.RenderPartial((string) ViewBag._ViewName); %>
</asp:Content>
<asp:Content ID="scriptContent" ContentPlaceHolderID="ScriptContent" runat="server">

</asp:Content>

- -利用方法 - -

 public ActionResult Create(int clientId)
 {
....
return this.RazorView(choices); 

--- site.master(編集済み)---

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

<%@ Import Namespace="...." %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server">
    <title>Some Alt</title>
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />   
    <link href="../../Site.css" rel="stylesheet" type="text/css" />
    <asp:ContentPlaceHolder ID="ScriptContent" runat="server" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="-1" />
</head>
<body>
    <div class="page">
        <div id="main">
            <table width="100%">
                <tr>
                    <td valign="top" width="150" height="50">
                        <img src="<%= Common.CompanyLogoPath%>" alt="Some Alt width="150"
                            height="50" />
                    </td>
                    <td align="left" width="630" height="50" class="mainheading">
                        Description
                    </td>
                    <td align="right" valign="bottom">
                        <%= DateTime.Now.FormatShortDate() %>
                    </td>
                </tr>
                <tr>
                    <td colspan="3">
                        <hr />
                    </td>
                </tr>
                <tr>
                    <td valign="top" class="rightBorder">
                        <table>
                           .....
            </table>
        </div>
    </div>
</body>
</html>
于 2012-05-25T16:02:41.723 に答える
1

Scott Hanselman は、いつものように、これに対していくつかの選択肢があります。あなたはそれを行うことができますが、それはきれいではありません:

http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx

于 2012-06-08T15:26:15.360 に答える
1

MVC Razor の代わりにレイアウトを使用することをお勧めします。

http://weblogs.asp.net/scottgu/archive/2010/10/22/asp-net-mvc-3-layouts.aspx

于 2012-05-25T15:54:26.313 に答える