【发布时间】:2014-11-15 05:46:04
【问题描述】:
我有这个:
查看:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Bycicle</h4>
<hr />
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.id)
<div class="form-group">
<label class="control-label col-md-2" for="BycicleID">Mark</label>
<div class="col-md-10">
@Html.DropDownList("BycicleID", String.Empty)
@Html.ValidationMessageFor(model => model.id)
</div>
</div>
控制器:
public async Task<ActionResult> Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Bycicle bycicle = await db.Bycicles.FindAsync(id);
if (bycicle == null)
{
return HttpNotFound();
}
ViewBag.id = new SelectList(db.Bycicles, "BycicleID", "Mark", bycicle.id);
//ViewBag.Color = new SelectList(db.Bycicles, "Color", "Color", bycicle.Color);
//ViewBag.Weight = new SelectList(db.Bycicles, "Weight", "Weight", bycicle.Weight);
//ViewBag.Height = new SelectList(db.Bycicles, "Height", "Height", bycicle.Height);
return View(bycicle);
}
// POST: Bycicle/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Edit(
[Bind(Include = "id, Mark, Color, Weight,Height")]
Bycicle bycicle)
{
if (ModelState.IsValid )
{
db.Entry(bycicle).State = EntityState.Modified;
await db.SaveChangesAsync();
return RedirectToAction("Index");
}
ViewBag.id = new SelectList(db.Bycicles, "id", "Mark", bycicle.id);
return View(bycicle);
}
和模型:
public class Bycicle
{
public int id { get; set; }
// [Column("Mark")]
public string Mark { get; set; }
public string Color { get; set; }
public string Weight { get; set; }
public string Height { get; set; }
public DateTime? LastTimeChecked { get; set; }
}
但是我可以更新其他值(颜色、重量、高度)但是如果我在更新视图中按保存,标记名称将被删除。我还检查了数据库,更新后标记值消失了。但是如果我只是按下编辑(更新)然后首先我在下拉列表中看到值(标记),但保存后标记值消失了。即使我没有更改更新视图中的标记值。
我就是不知道哪里出了问题。
谢谢!!
好吧,
我确实知道这是一个类型错误,
但是,dropdonlists 不正确是什么意思?因为您没有无限的自行车标记列表。这就是为什么我选择制作一个包含所有标记、颜色和尺寸的下拉列表的原因。因为管理员填写标记、尺寸等,然后用户可以选择标记、颜色等。但是您将如何设计不同的属性?
我没有单独的颜色、标记等表格。但有必要吗?
谢谢
【问题讨论】:
-
因此,如果尚未创建
Bycicle,则new SelectList(db.Bycicles, "Color", "Color", bycicle.Color);将为空 - 即您永远无法选择颜色。当然,对于与Bycicle具有外键关系的颜色,您需要单独的表格
标签: asp.net-mvc-4 visual-studio-2012 c#-5.0