Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.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
如何使用MVC Razor在C#MVVC中将模型传递到视图_C#_Asp.net Mvc_Razor - Fatal编程技术网

如何使用MVC Razor在C#MVVC中将模型传递到视图

如何使用MVC Razor在C#MVVC中将模型传递到视图,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我是使用MVC Razor的新手,我有这个问题 我有这样的看法: @model MoldCapThickness.Models.MoldCapModels @using PagedList.Mvc; @using PagedList; @{ ViewBag.Title = "Index"; } @Styles.Render("~/Content/MoldCapStyles.css") @Scripts.Render("~/bundles/

我是使用MVC Razor的新手,我有这个问题

我有这样的看法:

@model MoldCapThickness.Models.MoldCapModels
@using PagedList.Mvc;
@using PagedList;
@{
    ViewBag.Title = "Index";
}
@Styles.Render("~/Content/MoldCapStyles.css")
@Scripts.Render("~/bundles/moldCapScript")
@using (Html.BeginForm())
{
    <div class="container">

        <div class="fields-field">
            @Html.LabelFor(m => m.LotNumber)
            @Html.TextBoxFor(m => m.LotNumber, new { title = "" })
            @Html.LabelFor(m => m.Equipment)
            @Html.TextBoxFor(m => m.Equipment, new { title = "" })
            <input type="submit" value="Buscar" name="Filter" />
        </div>
        <h4>Informacion del Lote seleccionado</h4>
        <div class="lotInfo">
            <p class="lotInfoLabel">
                @Html.LabelFor(m => m.PartNumber)
                @Html.DisplayTextFor(m => m.PartNumber)
            </p>
            <p class="lotInfoLabel">
                @Html.LabelFor(m => m.Equipment)
                @Html.DisplayTextFor(m => m.Equipment)
            </p>
            <p class="lotInfoLabel">
                @Html.LabelFor(m => m.MoldCapThickness)
                @Html.DisplayTextFor(m => m.MoldCapThickness)
            </p>
            <p class="lotInfoLabel">
                @Html.LabelFor(m => m.MoldCapThicknessRangeMax)
                @Html.DisplayTextFor(m => m.MoldCapThicknessRangeMax)
            </p>
            <p class="lotInfoLabel">
                @Html.LabelFor(m => m.MoldCapThicknessRangeMin)
                @Html.DisplayTextFor(m => m.MoldCapThicknessRangeMin)
            </p>
            <p class="lotInfoLabel">
                @Html.DisplayTextFor(m => m.EquipmentType)
            </p>
        </div>
        <div class="press-containers">
            @foreach (var press in (Model != null ? Model.TransferConfigurations : new List<MoldCapThickness.Models.TransferConfiguration>()))
            {
                <div class="press-par">
                    <div class="press">
                        <p class="press-name">@press.PressName</p>
                        <p>LEFT</p>
                        <p>Molde: @press.Mold</p>
                        @Html.LabelFor(m => press.NumeroTira)
                        @Html.TextBoxFor(m => press.NumeroTira)
                        <div id="press-thickness-list">
                            @foreach (var thickness in press.Thickness)
                            {
                                <div class="moldThicknessListItem">
                                    <label>@thickness.Name: </label>
                                    @Html.TextBoxFor(m => thickness.Value)
                                    <label>mm</label>
                                </div>
                            }
                        </div>
                        <div class="comments-container">
                            <a href="#">Comentarios</a>
                        </div>
                    </div>
                    <div class="press">
                        <p class="press-name">@press.PressName</p>
                        <p>RIGHT</p>
                        <p>Molde: @press.Mold</p>
                        @Html.LabelFor(m => press.NumeroTira)
                        @Html.TextBoxFor(m => press.NumeroTira)
                        <div id="press-thickness-list">
                            @foreach (var thickness in press.Thickness)
                            {
                                <div class="moldThicknessListItem">
                                    <label>@thickness.Name: </label>
                                    @Html.TextBoxFor(m => thickness.Value)
                                    <label>mm</label>
                                </div>
                            }
                        </div>
                    </div>
                </div>
            }
            @foreach (var press in (Model != null ? Model.CompressionConfiguration : new List<MoldCapThickness.Models.CompressionConfiguration>()))
            {
                <div class="press-par">
                    <div class="press">
                        <p class="press-name">@press.PressName</p>
                        <p>UPPER</p>
                        <p>Molde: @press.Mold</p>
                        <div>
                            @Html.LabelFor(m => press.NumeroTira)
                            @Html.TextBoxFor(m => press.NumeroTira)
                        </div>
                        <div id="press-thickness-list">
                            @foreach (var thickness in press.Thickness)
                            {
                                <div class="moldThicknessListItem">
                                    <label>@thickness.Name: </label>
                                    @Html.TextBoxFor(m => thickness.Value)
                                    <label>mm</label>
                                </div>
                            }
                        </div>
                    </div>
                    <div class="press">
                        <p class="press-name">@press.PressName</p>
                        <p>LOWER</p>
                        <p>Molde: @press.Mold</p>
                        <div>Numero de tira</div>
                        <div id="press-thickness-list">
                            @foreach (var thickness in press.Thickness)
                            {
                                <div class="moldThicknessListItem">
                                    <label>@thickness.Name: </label>
                                    @Html.TextBoxFor(m => thickness.Value)
                                    <label>mm</label>
                                </div>
                            }
                        </div>
                    </div>
                </div>


            }

        </div>
        <div>
            <input type="submit" value="Enviar" name="Send" />
        </div>
    </div>
}
public class Controller: CommonController {
  public ActionResult Index() {
    return View();
  }

  [HttpPost]
  [ButtonClick(Name = "Filter")]
  public ActionResult Filter(MoldCapModels capModels) {
    if (!string.IsNullOrWhiteSpace(capModels.LotNumber) && !string.IsNullOrWhiteSpace(capModels.Equipment)) {
      capModels.PartNumber = GetPartNumber(capModels.LotNumber);
      capModels.Equipment = GetEquipment(capModels.Equipment);
      capModels.MoldCapThickness = GetMoldCapThickness(capModels.PartNumber);
      capModels.MoldCapThicknessRangeMin = GetMoldCapThicknessMinRange(capModels.PartNumber);
      capModels.MoldCapThicknessRangeMax = GetMoldCapThicknessMaxRange(capModels.PartNumber);
      capModels.EquipmentType = GetEquipmentType(capModels.Equipment);
      if (capModels.EquipmentType == "TRANSFER") {
        capModels.TransferConfigurations = GetTranserPresses(capModels.Equipment, capModels.PartNumber);
      } else {
        capModels.CompressionConfiguration = GetCompressionPresses(capModels.Equipment, capModels.PartNumber);
      }

    }
    return View(capModels);
  }

  [HttpPost]
  [ButtonClick(Name = "Send")]
  public ActionResult Send(MoldCapModels capModel) {
    return View(capModel);
  }

}
filter方法填充MoldCapModels的字段,并返回已填充字段的模型以在视图中显示它们。这很好用。正如您在模型中看到的,我有两个对象列表,列表根据数据库中的某些值填充,该列表在视图中使用foreach cicles进行处理,视图中的每个对象都有自己的值来填充,表示为
thickness.Value
字段。 当我想使用Send输入调用Send方法时,问题就出现了。发送方法正在等待视图使用的模型,但问题是此模型带有空值,只有
LotNumber
device
字段有值,两个模型列表和所有其他字段都是空的

我需要模型值,包括列表及其对象值


如何将模型及其当前值发送到控制器中的send方法?

您需要更新视图,并在foreach中替换所有如下文本框:

@Html.TextBoxFor(m => press.NumeroTira)
并使用以下命令:

<input type="textbox" name="capModel.TransferConfigurations[@index].NumeroTira" value="@press.NumeroTira"/>
并在每次迭代结束前递增

@index++
<input type="textbox" name="TransferConfigurations[@index].NumeroTira" value="@press.NumeroTira"/>
@{var index = 0;}
@index++