C#MVC从视图中获取模型列表
我有一个模型列表,显示在表单中的视图中。这样就可以了,但是如果我点击save,我得到了模型,但是列表是空的。有人有主意吗 视图:C#MVC从视图中获取模型列表,c#,asp.net-mvc,C#,Asp.net Mvc,我有一个模型列表,显示在表单中的视图中。这样就可以了,但是如果我点击save,我得到了模型,但是列表是空的。有人有主意吗 视图: @model AdminFeatureSetsModel @{ Layout=“~/Views/Shared/_AdministrationLayout.cshtml”; } @节头 { 编辑要素设置 } @使用(Html.BeginForm(“Save”、“adminfeatureset”、FormMethod.Post、new{id=“EditFeatureS
@model AdminFeatureSetsModel
@{
Layout=“~/Views/Shared/_AdministrationLayout.cshtml”;
}
@节头
{
编辑要素设置
}
@使用(Html.BeginForm(“Save”、“adminfeatureset”、FormMethod.Post、new{id=“EditFeatureSet”、name=“EditFeatureSet”、@class=“form horizontal”}))
{
功能名称
启用
验证
由用户启用
由组织启用
@对于(int i=0;iModel.featureset[i].Enabled,新的{@class=“form control”,@id=“EditEnable”})
@Html.TextBoxFor(m=>Model.featureset[i].Verify,新{@class=“form control”,@id=“EditVerify”})
@Html.TextBoxFor(m=>Model.FeatureSets[i].enabledbyser,新{@class=“form control”,@id=“EditEnableByUser”})
@Html.TextBoxFor(m=>Model.featureset[i].enabledbyorganization,新{@class=“form control”,@id=“EditEnableByOrganization”})
}
其他的
{
@Model.featureset[i].Name
不在数据库中
}
}
拯救
}
控制器:
在由foreach(model.featureset)保存的函数中,featureset(List)始终为空
public ActionResult Index()
{
AdminFeatureSetsModel modelFeatureSets = new AdminFeatureSetsModel();
modelFeatureSets.FeatureSets = new List<FeatureSetModel>();
var featureInDB = DbContext.GetAllEntitiesQueryable<Feature>();
var clazz = typeof(FeatureSet);
foreach (var property in clazz.GetProperties())
{
FeatureSetModel modelFeatureSet = new FeatureSetModel();
var feature = featureInDB.FirstOrDefault(f => f.Name == property.Name);
if (feature != null)
{
modelFeatureSet.Name = feature.Name;
modelFeatureSet.Enabled = feature.Enabled;
modelFeatureSet.Verify = feature.Verify;
modelFeatureSet.EnabledByUser = feature.EnableByUser;
modelFeatureSet.EnabledByOrganisation = feature.EnableByOrganization;
modelFeatureSet.IsFeatureInDB = true;
}else
{
modelFeatureSet.Name = property.Name;
modelFeatureSet.IsFeatureInDB = false;
}
modelFeatureSets.FeatureSets.Add(modelFeatureSet);
}
return View(modelFeatureSets);
}
public ActionResult Save(AdminFeatureSetsModel model)
{
var featureInDB = DbContext.GetAllEntitiesQueryable<Feature>();
foreach (var featureSet in model.FeatureSets) // here the FeatureSet of the model is always empty
{
if (featureSet.IsFeatureInDB == true)
{
var feature = featureInDB.FirstOrDefault(f => f.Name == featureSet.Name);
feature.Enabled = featureSet.Enabled;
feature.Verify = featureSet.Verify;
feature.EnableByUser = featureSet.EnabledByUser;
feature.EnableByOrganization = featureSet.EnabledByOrganisation;
}
}
DbContext.SaveChanges();
return RedirectToAction("Index", "AdminFeatureSet");
}
public ActionResult Index()
{
AdminFeatureSetModel modelFeatureSets=新的AdminFeatureSetModel();
modelFeatureSets.FeatureSets=新列表();
var featureInDB=DbContext.getAllentiesQueryable();
var clazz=类型(特征集);
foreach(clazz.GetProperties()中的var属性)
{
FeatureSetModel modelFeatureSet=新FeatureSetModel();
var feature=featureInDB.FirstOrDefault(f=>f.Name==property.Name);
如果(功能!=null)
{
modelFeatureSet.Name=feature.Name;
modelFeatureSet.Enabled=功能.Enabled;
modelFeatureSet.Verify=特征.Verify;
modelFeatureSet.EnabledByUser=feature.EnableByUser;
modelFeatureSet.EnabledByOrganization=feature.EnableByOrganization;
modelFeatureSet.IsFeatureInDB=true;
}否则
{
modelFeatureSet.Name=property.Name;
modelFeatureSet.IsFeatureInDB=false;
}
modelFeatureSet.FeatureSet.Add(modelFeatureSet);
}
返回视图(模型特征集);
}
公共操作结果保存(AdminFeatureSetsModel模型)
{
var featureInDB=DbContext.getAllentiesQueryable();
foreach(model.featureSet中的var featureSet)//这里模型的featureSet总是空的
{
如果(featureSet.IsFeatureInDB==true)
{
var feature=featureInDB.FirstOrDefault(f=>f.Name==featureSet.Name);
feature.Enabled=featureSet.Enabled;
feature.Verify=featureSet.Verify;
feature.EnableByUser=featureSet.EnabledByUser;
feature.EnableByOrganization=featureSet.EnableByOrganization;
}
}
DbContext.SaveChanges();
返回重定向到操作(“索引”、“AdminFeatureSet”);
}
具有列表的模型:
public class AdminFeatureSetsModel :AdminBaseModel
{
public List<FeatureSetModel> FeatureSets { get; set; }
}
公共类AdminFeatureSetsModel:AdminBaseModel
{
公共列表功能集{get;set;}
}
模型特征集:
public class FeatureSetModel : AdminBaseModel
{
public string Name { get; set; }
public bool Enabled { get; set; }
public bool Verify { get; set; }
public bool EnabledByUser { get; set; }
public bool EnabledByOrganisation { get; set; }
public bool IsFeatureInDB { get; set; }
public List<User> EnabledUserList { get;set;}
public List<Organization> EnabledOrginaizationList { get; set; }
}
公共类功能集模型:AdminBaseModel
{
公共字符串名称{get;set;}
已启用公共bool的{get;set;}
公共bool验证{get;set;}
public bool EnabledByUser{get;set;}
公共bool enabledbyorganization{get;set;}
公共bool IsFeatureInDB{get;set;}
public List EnabledUserList{get;set;}
public List EnabledOrginaizationList{get;set;}
}
编辑
@Html.HiddenFor(m=>m.featureset[i].IsFeatureInDB)
if(Model.FeatureSets[i].IsFeatureInDB==true)
{
@**@
@Model.featureset[i].Name
@Html.CheckBoxFor(m=>Model.featureset[i].Enabled)
@Html.CheckBoxFor(m=>Model.featureset[i].Verify)
@Html.CheckBoxFor(m=>Model.featureset[i].EnabledByUser)
@(m=>Model.featureset[i].enabledbyorganization)
}
其他的
{
@Model.featureset[i].Name
@Html.HiddenFor(m=>m.featureset[i].Enabled)
@Html.Hid
public class FeatureSetModel : AdminBaseModel
{
public string Name { get; set; }
public bool Enabled { get; set; }
public bool Verify { get; set; }
public bool EnabledByUser { get; set; }
public bool EnabledByOrganisation { get; set; }
public bool IsFeatureInDB { get; set; }
public List<User> EnabledUserList { get;set;}
public List<Organization> EnabledOrginaizationList { get; set; }
}
@Html.HiddenFor(m => m.FeatureSets[i].IsFeatureInDB)
if (Model.FeatureSets[i].IsFeatureInDB == true)
{
@*<input type="hidden" name="FeatureSets.Index" value="@i" />*@
<div class="col-sm-2">
<b> @Model.FeatureSets[i].Name</b>
</div>
<div class="col-sm-2">
@Html.CheckBoxFor(m => Model.FeatureSets[i].Enabled)
</div>
<div class="col-sm-2">
@Html.CheckBoxFor(m => Model.FeatureSets[i].Verify)
</div>
<div class="col-sm-2">
@Html.CheckBoxFor(m => Model.FeatureSets[i].EnabledByUser)
</div>
<div class="col-sm-2">
@Html.CheckBoxFor(m => Model.FeatureSets[i].EnabledByOrganisation)
</div>
<br />
<br />
}
else
{
@Model.FeatureSets[i].Name
@Html.HiddenFor(m => m.FeatureSets[i].Enabled)
@Html.HiddenFor(m => m.FeatureSets[i].Verify)
@Html.HiddenFor(m => m.FeatureSets[i].EnabledByUser)
@Html.HiddenFor(m => m.FeatureSets[i].EnabledByOrganisation)
}
if (Model.FeatureSets[i].IsFeatureInDB == true)
@for (int i = 0; i < Model.FeatureSets.Count; i++)
{
@Html.HiddenFor(m => m[i].IsFeatureInDB ) // add this so its value posts back
if (Model.FeatureSets[i].IsFeatureInDB == true)
{
@Model.FeatureSets[i].Name
@Html.TextBoxFor(m => m[i].Enabled, new { @class = "form-control" }) // remove id attribute
....
}
else
{
@Model.FeatureSets[i].Name</b>
@Html.HiddenFor(m => m[i].Enabled) // add hidden inputs
....
}
if (Model.FeatureSets[i].IsFeatureInDB == true)
{
<input type="hidden" name="FeatureSets.Index" value="@i" /> // add this
<div class="col-sm-2">
<b> @Model.FeatureSets[i].Name</b>
</div>
<div class="col-sm-2">
@Html.TextBoxFor(m => Model.FeatureSets[i].Enabled, new { @class = "form-control" }) // remove the invalid id attributes
</div>