我有两个字段用作复合主键,不会自动生成。现在在编辑视图中,这两个字段是只读的,无法编辑它们。那么如何进行编辑......?
型号:
[Key][Column (Order=0)]
[Required]
public string LOV_COLUMN { get; set; }
[Key][Column(Order = 1)]
[Required]
public string LOV_CODE { get; set; }
[Required]
public string LOV_DESC{ get; set; }
public string COLUMN_TYPE { get; set; }
public string LOV_STATUS { get; set; }
控制器:
public ActionResult Edit(string LOV_COLUMN= "", string LOV_CODE="")
{
return View(dv.LOV.Find(LOV_COLUMN, LOV_CODE) ?? new ADM_LOV_Master());
}
[HttpPost]
public ActionResult Edit(ADM_LOV_Master entity, FormCollection form)
{
try
{
var model = dv.LOV.Find(entity.LOV_COLUMN, entity.LOV_CODE);
TryUpdateModel<ADM_LOV_Master>(model, form.ToValueProvider());
dv.Entry<ADM_LOV_Master>(model).State = System.Data.EntityState.Modified;
dv.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
Edit View Code as:
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>LOV_Master</legend>
<table>
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_COLUMN)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LOV_COLUMN)
@Html.ValidationMessageFor(model => model.LOV_COLUMN)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_CODE)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LOV_CODE)
@Html.ValidationMessageFor(model => model.LOV_CODE)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_DESC)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.LOV_DESC)
@Html.ValidationMessageFor(model => model.LOV_DESC)
</div>
</td>
</tr>
<tr>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.COLUMN_TYPE)
</div>
<div class="editor-field">
@*@Html.EditorFor(model => model.COLUMN_TYPE)*@
@Html.RadioButtonFor(model => model.COLUMN_TYPE, "C", new { id = "COLUMN_TYPE_false"})
<label for="COLUMN_TYPE_true">Character</label>
@Html.RadioButtonFor(model => model.COLUMN_TYPE, "N", new { id = "COLUMN_TYPE_true"})
<label for="COLUMN_TYPE_true">Number</label>
@Html.ValidationMessageFor(model => model.COLUMN_TYPE)
</div>
</td>
<td>
<div class="editor-label">
@Html.LabelFor(model => model.LOV_STATUS)
</div>
<div class="editor-field">
@*@Html.EditorFor(model => model.LOV_STATUS)*@
@Html.RadioButtonFor(model => model.LOV_STATUS, "Y", new { id = "LOV_STATUS_true"})
<label for="LOV_STATUS_true">Yes</label>
@Html.RadioButtonFor(model => model.LOV_STATUS, "N", new { id = "LOV_STATUS_false" })
<label for="LOV_STATUS_true">No</label>
@Html.ValidationMessageFor(model => model.LOV_STATUS)
</div>
</td>
</tr>
</table>
</fieldset>
}
答案 0 :(得分:3)
主键应该是不可变的,我强烈建议使用ID(int,GUID)作为主键,然后将它们作为具有唯一约束的代理键添加。我之所以这样说是因为如果任何数据在任何其他表格中引用此数据,您将受到约束违规,这对您来说将是一场噩梦。