我有ModelView,我创建它是为了通过view-razor形式创建新的记录实例。在控制器中我需要将列表数据分配给ViewModel; IEnumerable然后将此模型与列表数据(CategoryType)一起传递,然后在视图中我需要填入下拉列表,然后将所选CategoryType的ID与其他数据一起发送回控制器。
我已将IEnumerable值分配给控制器中的模型,但不确定是否正确以及如何在视图中执行休息部分???
public class CompanyProfileModelView
{
public Company _Company { get; set; }
public IEnumerable<CategoryType> _CategoryType { get; set; }
}
public class CategoryType
{
public int CategoryTypeID { get; set; }
public string CategoryTitle { get; set; }
public ICollection<Company> Companies { get; set; }
}
[HttpGet]
public ActionResult CreateCompany()
{
var _listData = _appFunctions.GetAllCategory();
var _model = new CompanyProfileModelView
{
_CategoryType = _listData
??????????????
};
return PartialView("_CreateNewCompanyPartial", _model);
}
[HttpPost]
public ActionResult CreateCompany(CompanyProfileModelView _model)
{
try
{
if (ModelState.IsValid)
{
//my code will be here to read for input data
}
}
catch (DataException ex)
{
ModelState.AddModelError("", "Unable To Create New Function Navigation" + ex);
}
return RedirectToAction("Home");
}
@model App.DAL.Model.CompanyProfileModelView
@using (Html.BeginForm("CreateCompany", "CompanyProfile", FormMethod.Post, new { id = "NewFunctionNavigationForm" }))
{
<div class="form-group">
@Html.LabelFor(@model => @model._Company.CompanyName, new { @class = "control-label col-md-2" })
<div class="form-group">
@Html.EditorFor(@model =>@model._Company.CompanyName)
@Html.ValidationMessageFor(@model=>@model._Company.CompanyName)
</div>
</div>
<div class="form-group">
// need help here for dropdown of CategoryType list
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
}
答案 0 :(得分:2)
由于DropDownList
使用IEnumerable<SelectListItem>
,请将视图模型更改为
public class CompanyProfileModelView
{
public Company Company { get; set; }
public SelectList CategoryList { get; set; }
}
并假设Company
模型包含
[Display(Name="Category")]
public int? CategoryType { get; set; }
控制器
[HttpGet]
public ActionResult CreateCompany()
{
var listData = _appFunctions.GetAllCategory();
var model = new CompanyProfileModelView
{
CategoryList = new SelectList(listData, "CategoryTypeID ", "CategoryTitle")
};
return View(model);
}
[HttpPost]
public ActionResult CreateCompany(CompanyProfileModelView model)
{
if (!ModelState.IsValid)
{
// Re-assign select list if returning the view
var listData = _appFunctions.GetAllCategory();
model.CategoryList = new SelectList(listData, "CategoryTypeID ", "CategoryTitle");
return View(model)
}
// Save and redirect
}
查看
@model App.DAL.Model.CompanyProfileModelView
@using (Html.BeginForm()) // Note, no parameters required in this case
{
....
@Html.LabelFor(m => m.Company.CategoryType, new { @class = "control-label col-md-2" })
@Html.DropDownListFor(m => m.Company.CategoryType, Model.CategoryList, "--Please select--")
@Html.ValidationMessageFor(m => m.Company.CategoryType)
.....
<input type="submit" value="Create" class="btn btn-default" />
}