我正在使用MVC爲我的ViewModel創建標準的創建/編輯表單。儘管我可以看到ID設置爲10004的DOM元素瀏覽器(& Web UI),但我的創建工作非常好,現在我進入了我的編輯窗體,並且ViewModel的ID被傳遞爲0。所有的字段到我的[HttpPost]編輯控制器的方法,但ID仍然是0.任何想法?MVC:爲什麼我的編輯控制器方法沒有收到我的ViewModel的ID?
下面是我的代碼片段(我有太多的字段等發佈一切,所有其他領域都正確地通過)。
在此先感謝!
視圖模型
public class Header_VM
{
[DisplayName("Contract ID")]
public int Contract_Key { get; set; }
etc
}
查看
@model (root).Header.Header_VM
@{
ViewBag.Title = "Edit";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Edit Header: @Model.Name</h2>
@using (Html.BeginForm("Edit", "Header", FormMethod.Post, new { name = "EditForm" }))
{
@Html.AntiForgeryToken()
<div class="form-horizontal" ng-app="HeaderApp">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Contract_Key, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.DisplayFor(model => model.Contract_Key)
</div>
etc...
</div>
}
我對 「INT NEWID ......」 一個破發點,並在該點Contract_Key爲0
控制器
[HttpPost]
public ActionResult Edit([Bind(Include = "Contract_Key, etc...")] Header_VM header)
{
int NewID = DB.Header_Insert(header);
return RedirectToAction("Details", "Header", new { Contract_Key = NewID });
}
您尚未創建'Contract_Key'('DisplayFor()'只是創建文本,而不是輸入) –
是的,因爲一個表單控件的一個ID。用戶不允許編輯該字段。 – swallis1
如果您從未將它發送給控制器,則您的控制器無法設置該屬性! (如果你沒有創建關聯的控件,爲什麼使用'LabelFor()')。你需要一個隱藏的輸入,或者更好的做法,把這個值作爲路由參數 –