Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用mvc 3和EF跨多个视图传递数据_Asp.net Mvc_Entity Framework_Razor - Fatal编程技术网

Asp.net mvc 使用mvc 3和EF跨多个视图传递数据

Asp.net mvc 使用mvc 3和EF跨多个视图传递数据,asp.net-mvc,entity-framework,razor,Asp.net Mvc,Entity Framework,Razor,也许这个问题在这里反复出现,但我找不到答案 我的项目是关于酒店预订的。我有一个类预约,它有一个选择房间的Icollection和一个表示进行预约的用户的类,以及其他类似日期和其他内容 过程如下: 在我的第一个视图中,我得到所选的房间、日期等,然后我将其传递到我的第二个视图,在那里我将获得用户信息,然后我有一个第三个视图,我想在其中显示所有收集的信息,以便用户最终可以单击按钮保存数据 我的问题是我需要在所有这些视图中传递reservation对象类。在我的测试中,我看到基本类型通过得很好,但是当我

也许这个问题在这里反复出现,但我找不到答案

我的项目是关于酒店预订的。我有一个类预约,它有一个选择房间的Icollection和一个表示进行预约的用户的类,以及其他类似日期和其他内容

过程如下:

在我的第一个视图中,我得到所选的房间、日期等,然后我将其传递到我的第二个视图,在那里我将获得用户信息,然后我有一个第三个视图,我想在其中显示所有收集的信息,以便用户最终可以单击按钮保存数据

我的问题是我需要在所有这些视图中传递reservation对象类。在我的测试中,我看到基本类型通过得很好,但是当我从视图发回到下一个控制器操作时,ChooseRooms的ICollection丢失了

是否有人可以发布一些示例,说明如何在从视图发回控制器的过程中不丢失复杂类型,如另一个类中的ChooseRooms预订

或者解释一下为什么这些信息丢失了

守则:

 public class Reserva
{
    public virtual int ID { get; set; }

    [NotMapped]
    public string[] q { get; set; }

    [Display(Name = "Cliente")]
    public virtual Utilizador utilizador { get; set; }

    [Display(Name = "Quarto")]
    public virtual ICollection<Quartos> ChoosenRooms{ get; set; }

    [Display(Name = "Serviços Adicionais")]
    public virtual ICollection<ReservasItens> itens { get; set; }
公共类保留
{
公共虚拟整数ID{get;set;}
[未映射]
公共字符串[]q{get;set;}
[显示(Name=“客户”)]
公共虚拟实用程序实用程序{get;set;}
[显示(Name=“Quarto”)]
公共虚拟ICollection选择房间{get;set;}
[显示(Name=“Serviços Adicionais”)]
公共虚拟ICollection itens{get;set;}
景色

@model SolarDeOura.Models.Reserva
    @{
        ViewBag.Title = "AddReservaUser";
        var _reserva = TempData["reserva"] as Reserva;
     }

    <h2>AddReservaUser</h2>

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Reserva</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.dtEntrada)
        </div>
        <div class="editor-field">
            @Html.DisplayFor(model => model.dtEntrada)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.dtSaida)
        </div>
        <div class="editor-field">
            @Html.DisplayFor(model => model.dtSaida)
        </div>
        <div class="editor-label">
            @Model.q.Count() Choosen Rooms 
        </div>

        @foreach (var q in Model.ChoosenRooms)
        { 
            <ul>
                <li>
                    @Html.DisplayFor(modelitem => q.descricao)
                </li>
            </ul>
        }
@model SolarDeOura.Models.Reserva
@{
ViewBag.Title=“AddReservaUser”;
var_reserva=TempData[“reserva”]作为reserva;
}
AddReservaUser
@使用(Html.BeginForm())
{
@Html.ValidationSummary(true)
保留
@LabelFor(model=>model.dtEntrada)
@DisplayFor(model=>model.dtEntrada)
@LabelFor(model=>model.dtSaida)
@DisplayFor(model=>model.dtSaida)
@Model.q.Count()选择房间
@foreach(Model.ChooseRooms中的var q)
{ 
  • @DisplayFor(modeleItem=>q.descripcao)
}

从这里发回是个问题。在这个视图中,“@foreach(Model.ChoosenRooms中的var q)”有数据,但发回的数据丢失了。

此时,模型绑定器的概念对我来说不是很清楚,关于这个主题的一些知识就是解决这个问题所需要的全部知识

在简历中:

该视图获取一个复杂类型的模型:类[reserva]有一个[ChooseRooms]集合,该集合也是一个复杂类型

@Html.DisplayFor(modelitem=>q.descripcao)
呈现必要的Html元素以显示数据,但不呈现要发布回控制器(输入元素或隐藏字段)的必要Html,因此模型绑定器失败

此外,控制器(post)操作参数没有与字段匹配的属性名称,在本例中,它需要是
String[]
类型,因为它是值的集合


我还建议您阅读有关显示模板和编辑器模板的内容。

此时,我对model binder的概念不是很清楚,只需了解一些有关此主题的知识即可解决此问题

在简历中:

该视图获取一个复杂类型的模型:类[reserva]有一个[ChooseRooms]集合,该集合也是一个复杂类型

@Html.DisplayFor(modelitem=>q.descripcao)
呈现必要的Html元素以显示数据,但不呈现要发布回控制器(输入元素或隐藏字段)的必要Html,因此模型绑定器失败

此外,控制器(post)操作参数没有与字段匹配的属性名称,在本例中,它需要是
String[]
类型,因为它是值的集合


我还建议您阅读有关显示模板和编辑器模板的内容。

您是否可以使用MVC4切换到(SPA)?示例一点也不清楚。第一个_reserva变量根本没有使用。第二个是使用DisplayFor,而不是EditorFor。最后是交换“modelitem”和“q”,我不确定它是否在页面上的HTML标记中生成了正确的元素.Id。还有,控制器操作是什么样子的?是否可以使用MVC4切换到(SPA)?示例一点也不清楚。第一个_reserva变量根本没有使用。第二个是使用DisplayFor,而不是EditorFor。最后交换“modelitem”和“q”,我不确定它是否在页面上的HTML标记中生成正确的element.Id。还有,控制器操作是什么样子的?