我正在使用視圖模型和局部視圖來使用AJAX插入行。插入新行時,ViewModel的ID(AttributeDefinitionID
)被設置爲零。保存時,ID會更新併發送回視圖。然而,綁定到ID的助手似乎仍然具有舊的價值。Html助手可能爲輸入緩存值
視圖模型
public class AttributeEntryViewModel
{
public int AttributeDefinitionID { get; set; }
[Required]
[MaxLength(255, ErrorMessage = "Name must be less than
255 characters in length.")]
public string Name { get; set; }
}
局部視圖 「_AttributeEntryPartial.cshtml」
@model ICMDB.ViewModels.AttributeEntryViewModel
<tr id ="@Model.AttributeDefinitionID" >
@Html.HiddenFor(model => model.AttributeDefinitionID)
<td>
@Html.EditorFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</td>
<td>
<a href="#" onclick="RemoveAttribute(@Model.AttributeDefinitionID);
return false;">Remove</a>
</td>
</tr>
出於某種原因,該HTML輔助Html.HiddenFor
不綁定到正確的值,併產生下面的HTML:
<tr id="40850">
<input id="AttributeDefinitionID" type="hidden" value="0"
name="AttributeDefinitionID" data-val-required="The
AttributeDefinitionID field is required." data-val-number= "The
field AttributeDefinitionID must be a number." data-val="true">
你可以看到它已經正確插入了ID在行標記(<tr id = "40850">
)中但不在輸入標記(value="0"
)中。這應該是value="40850"
。
任何想法? Html Helper或瀏覽器是否緩存值?
編輯:的AJAX功能的addAttribute只是調用相同名稱的控制器功能和附加所得的部分(該部分如上所列),以一個表:
function AddAttribute() {
// and send it as AJAX request
$.ajax({
url: '@Url.Action("AddAttribute")',
type: 'POST',
cache: false,
success: function (result) {
// when the AJAX succeeds add result to the table
$('#AttributesTable').append(result);
}
})
}
[HttpPost]
public ActionResult AddAttribute()
{
var model = new AttributeEntryViewModel();
return PartialView("_AttributeEntryPartial", model);
}
您能否深入解釋AJAX部分?我不知道這個問題是不是AJAX相關,因爲我沒有看到任何AJAX代碼:) – saintedlama