首先,我已经从现有的db预定义了模型。我只想用MVC 5在编辑页面上显示现有的价值。
以下是我所做的:
控制器
public async Task<ActionResult> Edit(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
slik_data_a01 slik_data_a01 = await db.slik_data_a01.FindAsync(id);
if (slik_data_a01 == null)
{
return HttpNotFound();
}
//init DD
var selectedjs = (from x in db.master_segmenfasilitas
where x.sandi == slik_data_a01.kode_jenis_segmen
select new { x.fasilitas, x.sandi }).FirstOrDefault();
var jenissegmen = new SelectList((from x in db.master_segmenfasilitas
select new { x.fasilitas, x.sandi }).ToList(), "sandi", "fasilitas", selectedjs);
ViewBag.jenissegmen = jenissegmen;
return View(slik_data_a01);
}我的观点是:
<div class="form-group">
@Html.LabelFor(model => model.kode_jenis_segmen, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.kode_jenis_segmen, ViewBag.jenissegmen as SelectList, new{ @class = "form-control input-sm" })
@Html.ValidationMessageFor(model => model.kode_jenis_segmen, "", new { @class = "text-danger" })
</div>
</div>但是默认值总是显示SelectList的第一个数据,而不是现有的数据,尽管我已经在控制器上定义了选定的值。
任何帮助都很感激。
发布于 2017-03-14 03:07:50
我一直在试图解决这个问题,而简单的答案是,我不能在模型中没有关系的模型上分配所选的值。
唯一的方法是我需要更新我的模型,或者创建另一个用表单表示我的数据的模型(CMIIW)。
但我发现了一个简单的黑客,它不需要改变模型,仍然不完美,但它只是对我来说很好。
这是我更新的控制器:
public async Task<ActionResult> Edit(Guid? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var slik_data_a01 = await db.slik_data_a01.FindAsync(id);
if (slik_data_a01 == null)
{
return HttpNotFound();
}
//init Dropdown Data
ViewBag.jenissegmen = new SelectList((from x in db.master_segmenfasilitas
select new { x.fasilitas, x.sandi }).ToList()
/*OrderByDescending to put the selected value on first row*/
.OrderByDescending(o => o.sandi == slik_data_a01.kode_jenis_segmen)
, "sandi", "fasilitas");
//then return to the view.
return View(slik_data_a01);
}而视图仍然使用Html.DropDownListFor
发布于 2017-03-10 10:01:00
在最后一行传递对象到视图方法之前,需要在与DropDownListFor助手绑定的模型属性中设置选定的值,并且不需要在SelectList构造函数中设置选定的值,因此将SelectList创建代码更改为:
var jenissegmen = new SelectList((from x in db.master_segmenfasilitas
select new { x.fasilitas, x.sandi }).ToList(),
"sandi",
"fasilitas");在传递模型集之前,在模型属性中选择值之前,助手将注意选择值:
slik_data_a01.kode_jenis_segmen = selectedjs;
ViewBag.jenissegmen = jenissegmen;
return View(slik_data_a01);现在,控件将根据与其绑定的属性中的值设置所选值。
希望能帮上忙!
https://stackoverflow.com/questions/42715338
复制相似问题