因此,這裏是我的情況我有一個模型:MVC 4 EF 5 ID字段改變值綁定
public class Label
{
[Key]
[MaxLength(20, ErrorMessageResourceType = typeof(Validation), ErrorMessageResourceName = "MaxLength")]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public string ID { get; set; }
public string en { get; set; }
public string fr { get; set; }
public string es { get; set; }
public string ar { get; set; }
}
的CONTROLER動作的樣子:
public ActionResult Edit(int id = 0)
{
Criteria criteria = db.Criteria.Find(id);
if (criteria == null)
{
return HttpNotFound();
}
Label label = dbl.Labels.Where(l => l.ID == criteria.Label).FirstOrDefault();
return View(label);
}
和崗位:
[HttpPost]
public ActionResult Edit(Label label)
{
if (ModelState.IsValid)
{
Label L = dbl.Labels.Find(label.ID);
L.en = label.en;
dbl.SaveChanges();
}
return View(label);
}
以及看起來像這樣的視圖:
@model RAPID.Models.Translation.Label
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Criteria</legend>
<div class="editor-label">
@Html.LabelFor(model => model.ID)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ID)
@Html.ValidationMessageFor(model => model.ID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.en)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.en)
@Html.ValidationMessageFor(model => model.en)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.es)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.es)
@Html.ValidationMessageFor(model => model.es)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.fr)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.fr)
@Html.ValidationMessageFor(model => model.fr)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ar)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ar)
@Html.ValidationMessageFor(model => model.ar)
</div>
<p>
<input type="submit" value="Save" />
</p>
</fieldset>
}
我遇到的問題是,由於某種原因,當我檢查的編輯label.ID(獲得)的值是關聯到該域的正確字符串值。現在,當我在帖子中檢查相同的值label.ID時,此值已更改爲整數值,該值似乎與表中記錄的順序相對應。同樣在編輯視圖中,顯示的值是數字值與正確的字符串值。所以我認爲它與模型綁定有關,但不知道如何解決它。
想知道是否有人知道問題可能是什麼。
由於提前
呀criteria.Label是一個字符串...更改ID,以LabelID將需要許多其他現在改變到應用程序的其他部分,但我同意它應該改變,並可以解決問題。我不明白你指出的第一項內容的差異,並認爲它的偏好 – user2129585
以及第二個更短,我認爲SQL linq足夠聰明,性能不會更快但仍然。編寫什麼都不做的代碼有點不好。你也可以嘗試改變HttpGet參數,從(int id = 0)到(int labelid = 0)。這些變化不需要很多工作。 – Maximc
我同意較短的代碼,並將使用您的建議前進:) ...好吧,所以我改變了Get方法從int id = 0到字符串id這種方式,我只是直接傳遞標籤字符串,而不是再次查找它但你的建議也適用於將輸入參數的名稱更改爲ID以外的內容...我想說到綁定URL時優先於其他所有內容......非常感謝您的幫助 – user2129585