如何使用MVC Razor在C#MVVC中将模型传递到视图
我是使用MVC Razor的新手,我有这个问题 我有这样的看法:如何使用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/
@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++