DisplayFormodelに関する問題 -- asp.net-mvc フィールド と asp.net-mvc-3 フィールド 関連 問題

Problems with DisplayForModel












2
vote

問題

日本語

次のモデルを持っています:

<事前> <コード> namespace Storage.Models { public class AdminDetail { public string PartitionKey { get; set; } public string RowKey { get; set; } public string Title { get; set; } public string Status { get; set; } public string Type { get; set; } public string Level { get; set; } public string Order { get; set; } public int Row { get; set; } }

私のビューに次のコードがあります。

<事前> <コード> @model IList<AdminDetail> <table> <thead> <tr> <th>@Html.LabelFor(x => x[0].Order)</th> <th>@Html.LabelFor(x => x[0].Order)</th> <th>@Html.LabelFor(x => x[0].Level)</th> <th>@Html.LabelFor(x => x[0].Title)</th> <th>@Html.LabelFor(x => x[0].Status)</th> </tr> </thead> <tbody> @foreach (var item in Model) { @Html.DisplayFor(model => item) } </tbody> </table>

およびファイル内:views displaytemplates admindetail.cshtml

<事前> <コード> @model AdminDetail xxxxxxxxxxxxxxxxxxxxxxxx <tr> <td>@Html.DisplayFor(x => x.Order)</td> <td>@Html.DisplayFor(x => x.Level)</td> <td class="indent_@(adminDetail.Level)">@Html.DisplayFor(x => x.Title)</td> <td>@Html.DisplayFor(x => x.Status)</td> <td>@Html.ActionLink("Edit", "Edit", new { pk = adminDetail.PartitionKey, rk = adminDetail.RowKey }, new { @class = "editLink" } )</td> <td>@Ajax.ActionLink("Delete", "Delete", "Menus", new { pk = adminDetail.PartitionKey, rk = adminDetail.RowKey }, new AjaxOptions { HttpMethod = "POST", Confirm = "Are you sure you want to delete menu item ", OnSuccess = "deleteConfirmation" })</td> <td>@Html.DisplayFor(x => x.PartitionKey) @Html.DisplayFor(x => x.RowKey)</td> </tr>

私のビューが表示されたら、admindetailsレコードのデータが表示されますが、 <tr> <td> にはフォーマットはありません。私はエリアを使っていて、ビューのコードはエリア内にあります。私はエリアを使っているので、私のコードがdisplaytemplateを取得していないのですか?

これはデータが表示される方法の例です。

<事前> <コード> <table> <thead> <tr> <th><label for="">Order</label></th> <th><label for="">Order</label></th> <th><label for="">Level</label></th> <th><label for="">Title</label></th> <th><label for="">Status</label></th> </tr> </thead> <tbody> <div class="display-label">PartitionKey</div> <div class="display-field">01</div> <div class="display-label">RowKey</div> <div class="display-field">02</div> <div class="display-label">Title</div> <div class="display-field">Test55</div> <div class="display-label">Status</div> <div class="display-field">New</div> <div class="display-label">Type</div> <div class="display-field"></div> <div class="display-label">Level</div> <div class="display-field"></div>
英語

I have the following model:

namespace Storage.Models {     public class AdminDetail     {         public string PartitionKey { get; set; }         public string RowKey { get; set; }         public string Title { get; set; }         public string Status { get; set; }         public string Type { get; set; }         public string Level { get; set; }          public string Order { get; set; }         public int Row { get; set; }     } 

I have the following code in my view:

@model IList<AdminDetail>  <table>     <thead>         <tr>             <th>@Html.LabelFor(x => x[0].Order)</th>             <th>@Html.LabelFor(x => x[0].Order)</th>             <th>@Html.LabelFor(x => x[0].Level)</th>             <th>@Html.LabelFor(x => x[0].Title)</th>             <th>@Html.LabelFor(x => x[0].Status)</th>         </tr>     </thead>     <tbody>     @foreach (var item in Model)     {         @Html.DisplayFor(model => item)     }     </tbody> </table>  

And in the file: ViewsDisplayTemplatesAdminDetail.cshtml

    @model AdminDetail   xxxxxxxxxxxxxxxxxxxxxxxx <tr>     <td>@Html.DisplayFor(x => x.Order)</td>     <td>@Html.DisplayFor(x => x.Level)</td>     <td class="indent_@(adminDetail.Level)">@Html.DisplayFor(x => x.Title)</td>     <td>@Html.DisplayFor(x => x.Status)</td>     <td>@Html.ActionLink("Edit", "Edit",              new { pk = adminDetail.PartitionKey, rk = adminDetail.RowKey },             new { @class = "editLink" } )</td>         <td>@Ajax.ActionLink("Delete", "Delete", "Menus",             new { pk = adminDetail.PartitionKey, rk = adminDetail.RowKey },             new AjaxOptions {                         HttpMethod = "POST",                         Confirm = "Are you sure you want to delete menu item ",                         OnSuccess = "deleteConfirmation"                     })</td>       <td>@Html.DisplayFor(x => x.PartitionKey) @Html.DisplayFor(x => x.RowKey)</td> </tr> 

When my view appears I see the data for the AdminDetails records but there is no formatting for <tr> and <td> I also don't see any x's. I am using areas and the code for the view is inside an area. Is it possible that my code is not getting the DisplayTemplate because I am using areas?

Here's an example of the way data appears:

<table>     <thead>         <tr>             <th><label for="">Order</label></th>             <th><label for="">Order</label></th>              <th><label for="">Level</label></th>             <th><label for="">Title</label></th>             <th><label for="">Status</label></th>         </tr>     </thead>     <tbody> <div class="display-label">PartitionKey</div> <div class="display-field">01</div> <div class="display-label">RowKey</div> <div class="display-field">02</div> <div class="display-label">Title</div> <div class="display-field">Test55</div> <div class="display-label">Status</div> <div class="display-field">New</div> <div class="display-label">Type</div> <div class="display-field"></div> <div class="display-label">Level</div> <div class="display-field"></div> 
</div
     
 
 

回答リスト

9
 
vote
vote
ベストアンサー
 

表示テンプレートへのパスが間違っています。の代わりに:

<事前> <コード> ViewsDisplayTemplatesAdminDetail.cshtml

使用するべきです:

<事前> <コード> ViewsSharedDisplayTemplatesAdminDetail.cshtml

<コード> Shared ビットに注意してください。それはまた:

<事前> <コード> ViewsXXXDisplayTemplatesAdminDetail.cshtml

ここで、このディスプレイテンプレートをこのコントローラのみに使用できるようにする場合、 XXX は現在のコントローラの名前です。

ループを置き換えます。

<事前> <コード> @foreach (var item in Model) { @Html.DisplayFor(model => item) }

その同等のもの:

<事前> <コード> @Html.DisplayForModel()

ループする必要はありません。モデルはコレクションなので、ASP.NET MVCは自動的にこのコレクションの要素ごとに表示テンプレートを呼び出します。

 

The path to your display template is wrong. Instead of:

ViewsDisplayTemplatesAdminDetail.cshtml 

you should use:

ViewsSharedDisplayTemplatesAdminDetail.cshtml 

Notice the Shared bit. It could also be:

ViewsXXXDisplayTemplatesAdminDetail.cshtml 

where XXX is the name of the current controller if you want this display template to be available only for this controller.

Also replace your loop:

@foreach (var item in Model) {     @Html.DisplayFor(model => item) } 

with its equivalent:

@Html.DisplayForModel() 

You don't need to loop. Since your model is a collection, ASP.NET MVC will automatically invoke your display template for each element of this collection.

</div
 
 
   
   

関連する質問

1  MVC3かみそりとブラウザ(IE9)戻るボタンの問題  ( Mvc3 razor and the browser ie9 back button issue ) 
私はMVC 3のRazorアプリを開発しています、そして、私はブラウザの戻るボタンをクリックすると問題があります。私のアプリケーションワークフロー: ドロップダウンリストから機能を選択 webgridは施設の建物のリストを取り入れます。 画像をクリックして...

0  JavaScriptの参照はASP.NET開発サーバーが機能していませんか?  ( Javascript references arent working asp net development server ) 
ここで何が起こっているのかわからない。私は自分のスクリプトライブラリを試すことを試みることを考えることができるあらゆる方法でリンクを改革しましたが、何も機能しないようです。 私がそれを私のWebホストにアップロードするとき、それは全くうまく機能します。 奇...

25  ASP.NET MVC 3 jQuery検証。目立たないオンキーアップを無効にしますか?  ( Asp net mvc 3 jquery validation disable unobtrusive onkeyup ) 
特定のバリデータ(クレジットカード)のjQuery検証を無効にする方法は、OnKeyUp?の代わりにOnblurのみが発生します。 jQuery Validatorのドキュメントに基づく私はこのようなことができると思った: <事前> <コード> $(func...

6  ASP.NET MVC 3の動的フォームの転記  ( Posting dynamic forms in asp net mvc 3 ) 
作業しているフォームのいずれかで、選択した値に基づいてDropDownList "Type"を選択した場合、私は動的に他のドロップダウンリストのセットを表示します。 、タイプ:車、アパート 「車」を選択すると、2つの新しいドロップダウンリスト "価格"&amp...

2  MVC Entity Frameworkを使用した複数のAJAX要求がエラーを引き起こします  ( Mvc multiple ajax requests with entity framework causes error ) 
私は私のコントローラへのAjax Post呼び出しを介してデータをロードする2つのJQGridを持っています、そして私がアプリケーションを実行するたびに、2つの投稿のうちの1つだけが正常に実行されます。通常、ブラウザで更新を終了すると、両方のグリッドが正しくロ...

0  以下のコードで、代わりに私はControllerからデータを取得するための代替方法が成功している場合  ( In the below code instead i want an alternate method to fetch the data from cont ) 
下記のコードでは、DATA.MSGとしてチェックしたくありません。そのように - 代わりに、それが成功した場合にコントローラからデータを取得するための代替方法が(ScringSwithPassのような文字列またはブール値を使用せずに)。 コントローラコード: ...

2  多言語コンテンツWebサイトASP.NET MVC 3  ( Multilingual content websites asp net mvc 3 ) 
リソースファイルは、多言語のWebサイトを有効にするためにほとんど使用されます。データベースに保存されているデータはどうですか? Webサイト内のドロップダウンのようないくつかの「参照データ」が多言語である必要がある場合はどうなります。 レコードが属する言語を...

0  セキュリティロールに割り当てられているユーザーのリストを.NETに入手できますか?  ( How can i get a list of users that are assigned to a security role in net ) 
私はすでにその方法を見ました: <事前> <コード> GetRolesForUser しかし、私が役割の中でユーザーが見ることができる会員プロバイダーを使用している方法はありますか?私は検索され、それでも特定の役割のためにユーザーのレポートリストを作成す...

0  クラス内からApplicationNameを取得することは可能ですか?  ( Is it possible to get the applicationname from within a class ) 
ASP.NET MVC 3のカスタムメンバーページに取り組んで、現在のアプリケーションのアプリケーション名を動的に取得しようとしています。 正しいか、私はCoo-Coo? <事前> <コード> var application = new Applicatio...

0  リダイレクトされないコールアクション  ( Call action which does not redirect ) 
私は、操作を実行する必要があるページの一部(バックエンドにデータを送る)を持っていて、その後現在のページに残るだけです。 これを行う最善の方法は何ですか? Ajaxを使ってやりますか?より適切な方法? ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有