2017-04-11 13 views
0

私はMVCアプリケーションをやっています。mvcビュー内の非表示フィールドを読み取る

私はそれとは異なるビューを持っています。

最初にpartial Viewユーザーがログインしている場合、ユーザーIDはHidden Fieldです。

私の最初の部分図は、この

@model Prj.Models.UserLoginModel

のように継承するモデルは次のように..です

public class UserLoginModel 
 
    { 
 
     public long User_id { get; set; } 
 
     public bool Keep { get; set; } 
 
     public byte[] Picture { get; set; } 
 
     public string Name { get; set; } 
 
     public string LastName { get; set; } 
 
    
 
    }

私は隠されているHtml.HiddenFor @フィールド

(モデル=> model.User_id)

他の部分図は、それが

@model PagedList.IPagedList<Prj.Models.CommentModel> 
から継承 PagedList

をレンダリングするために使用IEnumerableです

public class CommentModel 
 
    { 
 
     public long Upload_id { get; set; } 
 
     public long User_id { get; set; } 
 
     public string Description { get; set; } 
 
     }

ビューで私は両方のユーザーをモデルから検証する必要があります。

@foreach (var item in Model) 
 
    { 
 
    ask item.User_id == PartialView1.Hidden.User_id 
 
}

それはそれを読み取ることがかのうSiまたは私は第2の部分ビューのモデルでユーザーIDを含める必要があれば私の質問はありますか?

答えて

0

あなたはパーシャルビューの子供のモデルを持っているメインビューにモデルを持っている、と彼らは次のように渡されます場合:

@{ Html.RenderPartial("partial", Model.PartialViewModel); } 

あなたが代わりに親モデルに渡すことができます。

@{ Html.RenderPartial("partial", Model); } 

そして親のすべてのプロパティへのアクセス権を持っているだけでなく、任意の子モデル:

Model.PartialViewModel.UserID 
+0

ありがとうございます。 1つのモデルにはユーザーIDとピクチャがあり、2番目のモデルにはIEnumerable がPagedListにレンダリングされています。私は、User Loggedがコメントのいずれかを書いたのと同じ人であるかどうかを知る必要があります。 – Diego

+0

あなたの質問からはそれほど明らかではありませんでした。おそらく、モデルを追加してViewのコードを追加することで、もう少し詳しく説明したいと思います。 – sleeyuen

+0

私はコメントを追加..明確にする – Diego

0

パーシャルビューは異なるHTMLページであり、お互いの要素を認識していません。それらがレンダリングされた後、JavaScriptを介してアクセスできるすべての部分ビューからのコンテンツを含む1つの大きなHTMLページを取得します

部分的なビューで変数を共有する場合は、変数を含むモデルを両方の部分ビューまたはjavascript $(document)で何かを使用します。あなたの隠しフィールドの値をフィールドから別の部分ビューに送信するメインのHTMLページで準備ができている

EDIT - 私は両方とも異なるビューモデルです。あなたができることの1つは、userId変数を使用してベースビューモデルを作成し、両方のビューモデルをbaseviewモデルから継承させて、その両方で変数を持たせることです - 例 - https://www.danylkoweb.com/Blog/aspnet-mvc-model-make-a-baseviewmodel-for-your-layouts-PX

関連する問題