Asp.net mvc 编辑器模板MVC中的Viewdata/Viewbag为空
带有简单控制器的Mvc应用程序,其中我返回带有模型的视图。 进入u创建视图。 由于有大量的下拉列表,我有几个视图包(13) 在视图中,我使用editortemplates显示模型中的复杂对象 问题是editortemplates中有几个ViewBag为空 如果我让调试器停止在控制器中,我的viewbags都已正确填充 如果让调试器在视图中停止,我可以看到其中一些调试器是空的 什么会导致这个问题 控制器:Asp.net mvc 编辑器模板MVC中的Viewdata/Viewbag为空,asp.net-mvc,viewbag,editortemplates,Asp.net Mvc,Viewbag,Editortemplates,带有简单控制器的Mvc应用程序,其中我返回带有模型的视图。 进入u创建视图。 由于有大量的下拉列表,我有几个视图包(13) 在视图中,我使用editortemplates显示模型中的复杂对象 问题是editortemplates中有几个ViewBag为空 如果我让调试器停止在控制器中,我的viewbags都已正确填充 如果让调试器在视图中停止,我可以看到其中一些调试器是空的 什么会导致这个问题 控制器: public ActionResult SetNewInputForm(Initia
public ActionResult SetNewInputForm(InitializeNewInputViewModel model)
{
var Input = new Input(model.AantalPrimairen,model.AantalSecundairen);
ViewBags();
return View(Input);
}
private void ViewBags()
{
ViewBag.Blikvorm = Enum.GetNames(typeof(Common.BlikVorm)).ToList();
ViewBag.Kwaliteit = Database.Kwaliteit.ToList();
ViewBag.BlikFabrikanten = Database.BlikFabrikant.ToList();
ViewBag.Walserijen = Database.Walserij.ToList();
ViewBag.BlikMontage = new SelectList(Database.KernMontage.ToList(), "Id", "KernMontageNaam");
ViewBag.SchakelWijze = Enum.GetNames(typeof(Common.SchakelWijze)).ToList();
ViewBag.AantalGaten = Enum.GetNames(typeof(Common.AantalGaten)).ToList();
ViewBag.DiameterGaten = Database.DiameterGat.ToList();
ViewBag.BlikFormaat = Database.BlikFormaat.ToList();
ViewBag.KernMontage = Database.KernMontage.ToList();
ViewBag.KokerFabrikanten = Database.KokerFabrikant.ToList();
}
我的部分观点
@model DomainClasses.Input
@using (Html.BeginForm("Create", "Input", FormMethod.Post))
{
<div class="containter">
<div class="row">
<div class="col-lg-4 ">
<div class="form-group">
<strong> @Html.DevExpress().LabelFor(t => t.SchakelwijzePrimair).GetHtml()</strong>
@Html.DevExpress().ComboBoxFor(t => t.SchakelwijzePrimair,
settings =>
{
settings.Name = "SchakelwijzePrimair";
}).BindList(ViewBag.Schakelwijze).GetHtml()
</div>
@Html.EditorFor(m => m.Primairen, Model.Primairen);
</div>
<div class="col-lg-8">
@Html.EditorFor(m => m.Secundairen, Model.Secundairen);
</div>
</div>
</div>
<div class="containter">
<div style="padding:1em;
margin:10px 5px;
border-style:inset;
background-color: aquamarine;
overflow:auto">
@Html.EditorFor(m => m.BlikAfmeting, Model.BlikAfmeting)
</div>
</div>
@model DomainClasses.Input
@使用(Html.BeginForm(“创建”、“输入”、FormMethod.Post))
{
@Html.DevExpress().LabelFor(t=>t.SchakelwijzePrimair).GetHtml()
@Html.DevExpress().ComboBoxFor(t=>t.SchakelwijzePrimair,
设置=>
{
settings.Name=“SchakelwijzePrimair”;
}).BindList(ViewBag.Schakelwijze).GetHtml()文件
@EditorFor(m=>m.Primairen,Model.Primairen);
@EditorFor(m=>m.Secundairen,Model.Secundairen);
@EditorFor(m=>m.BlikAfmeting,Model.BlikAfmeting)
我的编辑器模板的一部分:
@model DomainClasses.BlikAfmeting
<h4 class="modal-title"> Blik Afmetingen</h4>
<div class="col-lg-2">
<div class="form-group">
@Html.DevExpress().Label(settings =>
{
settings.Name = "ChooseBlikAfmetingComboLabel";
settings.Text = "Blikformaten";
}).GetHtml()
@Html.DevExpress().ComboBox(
settings =>
{
settings.Name = "ChooseBlikAfmetingCombo";
settings.Properties.DropDownStyle = DropDownStyle.DropDownList;
settings.Properties.CallbackPageSize = 15;
settings.Properties.IncrementalFilteringMode = IncrementalFilteringMode.StartsWith;
settings.Properties.TextFormatString = "{0} {1}";
settings.Properties.ValueField = "Id";
settings.Properties.NullText = "Kies BlikFormaat";
settings.Properties.ValueType = typeof(string);
//settings.Properties.ClientSideEvents.ValueChanged = "function(s, e) { GetBlikAfmetingTabel(s,e); }";
settings.Properties.Columns.Add("BlikVorm", "Blik Vorm", 90);
settings.Properties.Columns.Add("HoofdAfmeting", "Hoofd Afmeting", 90);
}
).BindList(ViewBag.BlikFormaat).GetHtml()
@model DomainClasses.BlikAfmeting
Blik Afmetingen
@Html.DevExpress().Label(设置=>
{
settings.Name=“ChooseBlikAfmetingComboLabel”;
settings.Text=“Blikformaten”;
}).GetHtml()
@Html.DevExpress()组合框(
设置=>
{
settings.Name=“ChooseBlikAfmetingCombo”;
settings.Properties.DropDownStyle=DropDownStyle.DropDownList;
settings.Properties.CallbackPageSize=15;
settings.Properties.IncrementalFilteringMode=IncrementalFilteringMode.StartWith;
settings.Properties.TextFormatString=“{0}{1}”;
settings.Properties.ValueField=“Id”;
settings.Properties.NullText=“Kies blikformat”;
settings.Properties.ValueType=typeof(字符串);
//settings.Properties.ClientSideEvents.ValueChanged=“函数(s,e){GetBlikAfmetingTabel(s,e);}”;
设置.属性.列.添加(“BlikForm”,“Blik Vorm”,90);
设置。属性。列。添加(“HoofdAfmeting”,“HoofdAfmeting”,90);
}
).BindList(ViewBag.blikformat).GetHtml()
Viewbag.BlikFormat始终为空
Viewbag.BlikForm在3个编辑器模板中的2个中为空。将所有Viewbag放入操作结果方法,如下所示
public ActionResult SetNewInputForm(InitializeNewInputViewModel model)
{
var Input = new Input(model.AantalPrimairen,model.AantalSecundairen);
ViewBag.Blikvorm = Enum.GetNames(typeof(Common.BlikVorm)).ToList();
ViewBag.Kwaliteit = Database.Kwaliteit.ToList();
ViewBag.BlikFabrikanten = Database.BlikFabrikant.ToList();
ViewBag.Walserijen = Database.Walserij.ToList();
ViewBag.BlikMontage = new SelectList(Database.KernMontage.ToList(), "Id", "KernMontageNaam");
ViewBag.SchakelWijze = Enum.GetNames(typeof(Common.SchakelWijze)).ToList();
ViewBag.AantalGaten = Enum.GetNames(typeof(Common.AantalGaten)).ToList();
ViewBag.DiameterGaten = Database.DiameterGat.ToList();
ViewBag.BlikFormaat = Database.BlikFormaat.ToList();
ViewBag.KernMontage = Database.KernMontage.ToList();
ViewBag.KokerFabrikanten = Database.KokerFabrikant.ToList();
return View(Input);
}
粘贴您的控制器和html代码以找出哪里出了问题额外注意:如果我将相同的组合框放在视图上而不是编辑器中,请注意模型-视图-控制器标记用于解决有关模式的问题。ASP.NET-MVC实现有一个特定的标记。仍然没有人解释为什么我的viewbag在我的editortemplate中加载不正确。但在视图本身中加载正确。我在视图中有一个解决方法,一个获取存储库调用,但我认为这不是一个好方法。不,我的isue没有解决。我已经对此进行了解决,现在我在视图中调用了一些存储库。但我想知道为什么EditorTemp中的某些ViewBag是空的如果我只在我的视图中调用viewbags,一切都正常。