2017-04-11 69 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)

另一局部视图,是用于渲染PagedList

一个IEnumerable它从

@model PagedList.IPagedList<Prj.Models.CommentModel> 
继承

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 
 
}

我的问题是,如果对更多钞票来读取,否则我必须包括用户ID的第二部分视图的模型?

回答

0

如果你有对有儿童的型号为局部视图主视图模型,他们获得通过在这样的:

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

您可以改为通过在父模型:

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

然后可以访问所有属性的父,以及任何儿童模特:

Model.PartialViewModel.UserID 
+0

Thanks,but there are不同的车型。其中模型有用户ID和照片和第二模型具有的IEnumerable 呈现在PagedList。我需要知道,如果登录的用户是谁写任何评论 – Diego

+0

这不是很明显的从你的问题的是同一个人。也许你想通过添加你的模型和更多的视图代码来进一步阐述。 – sleeyuen

+0

我添加更多评论..澄清 – Diego

0

部分视图是不同的HTML页面,因此不知道对方的元素。在它们被渲染后,你会得到一个包含所有局部视图内容的大HTML页面,这些内容可以通过javascript访问。

如果要部分视图共享变量,则需要将包含该变量的模型传递给部分视图或者在javascript $(document)中使用某些东西。准备HTML主页将从领域的一个局部视图,把你的隐藏字段值到另一个

编辑 - 我看你下面这两个是不同的视图模型说。你还可以做的一件事是创建一个带有userId变量的baseviewmodel,然后让你的两个视图模型都继承baseviewmodel,这样你就可以同时使用你的变量 - example - https://www.danylkoweb.com/Blog/aspnet-mvc-model-make-a-baseviewmodel-for-your-layouts-PX