mvc读取视图中的隐藏字段

时间:2017-04-11 19:23:35

标签: asp.net-mvc partial-views hidden-field

我正在做一个MVC应用程序。

我有一个带有不同部分视图的视图。

partial View的第一个Hidden Field我有用户ID,如果用户已登录。

My First Partial View继承了这个

  

@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 => model.User_id)

其他部分视图是IEnumerable,用于呈现PagedList

它继承自

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

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

在视图中,我需要从模型中验证用户。

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

我的问题是它是否可以阅读它,或者我必须在第二部分视图的模型中包含用户ID?

2 个答案:

答案 0 :(得分:0)

如果你在主视图上有一个模型,它有部分视图的子模型,它们会像下面那样被传入:

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

您可以改为传递父模型:

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

然后可以访问父级的所有属性以及任何子级模型:

Model.PartialViewModel.UserID

答案 1 :(得分:0)

部分视图是不同的HTML页面,因此不了解彼此的元素。在呈现它们之后,您将获得一个包含所有部分视图内容的HTML页面,这些内容可以通过javascript访问

如果您希望部分视图共享变量,那么您需要将包含该变量的模型传递给两个部分视图,或者在主HTML页面上使用javascript $(document).ready中的某些内容来发送您的隐藏字段值从一个局部视图中的字段到另一个

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