我正在尝试使用viewmodel进行编辑时显示正确的值,但只有当我将完整模型传递给视图时它才有效。
当我这样做并且已经选择了一个联系人时,它会在编辑屏幕中显示该联系人。
模型
public class ClientModel
{
public int ID { get; set; }
public int ContactID { get; set; }
//Other atributes
}
查看EditContact
@model Project.Models.ClientModel
@Html.DropDownListFor(model => model.ContactID , (SelectList)ViewBag.ContactID, "select a contact")
控制器
public ActionResult EditContact(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var Contact = db.Contacts.ToList();
ViewBagID.Contact = new SelectList(Contact.AsEnumerable(), "ID", "name", "Contact");
ClientModel model= db.ClientModel.Find(id);
return View(model);
}
但是当我这样做并且已经选择了联系人时,下拉列表会显示选择联系人。
模型
public class ClientModel
{
public int ID { get; set; }
public int ContactID { get; set; }
//Other atributes
}
视图模型
public class ClientEditContactModel
{
public int ID { get; set; }
public int ContactID { get; set; }
}
查看EditContact
@model Project.Models.ClientEditContactModel
@Html.DropDownListFor(model => model.ContactID, (SelectList)ViewBag.ContactID, "select a contact")
控制器
public ActionResult EditContact(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var Contact = db.Contacts.ToList();
ViewBag.ContactID = new SelectList(Contact.AsEnumerable(), "ID", "name", "Contact");
ClientModel client= db.ClientModel.Find(id);
ClientEditContactModel model = new ClientEditContactModel();
model.ID = client.ID;
model.ContactID = client.ContactID
return View(model);
}
如何使用viewmodel修复此问题?
修改 我在我的代码中做了一些拼写错误,所以我修复了它们,但由于它们,我找到了答案,见下文。
答案 0 :(得分:1)
我在这里进行了一些研究https://stackoverflow.com/a/11949123/4252392之后找到了答案。
问题是ViewBag的名称与模型的属性相同。 所以我改变了Viewbag的名字。
新控制器
public ActionResult EditContact(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var Contact = db.Contacts.ToList();
ViewBag.ContactIDList = new SelectList(Contact.AsEnumerable(), "ID",
"name", "Contact");
ClientModel client= db.ClientModel.Find(id);
ClientEditContactModel model = new ClientEditContactModel();
model.ID = client.ID;
model.ContactID = client.ContactID
return View(model);
}
新视图
@model Project.Models.ClientEditContactModel
@Html.DropDownListFor(model => model.ContactID, (SelectList)ViewBag.ContactIDList,
"select a contact")
答案 1 :(得分:0)
如果您在下拉列表中设置ContactID属性中的选定值,则需要在视图中设置下拉列表,如下所示:
@model Project.Models.ClientEditContactModel
@Html.DropDownListFor(model => model.ContactID, (SelectList)ViewBag.Contact,
"select a contact")