我正在使用视图模型和局部视图来使用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