文本框的jquery自动完成:不同的值和文本
所以,这个问题已经出现了好几次,通常是“input”的问题,而且大多数都在MVC3中。我希望情况有所改变。我正在使用jquery和autocomplete,希望保存“value”而不是“label”。然而,用户需要看到有意义的标签,而不是用户不关心的主键中的随机数 也许是因为我从webforms开始,但我很惊讶MVC控件似乎完全失去了将值与文本分开的概念。惊讶地认为问题可能是我遗漏了什么 那么,在不需要隐藏字段和模型属性的情况下,如何在此文本框中保存值并显示选定项的标签呢?在这种情况下,ContactName是要保存的重要值 剃须刀文本框的jquery自动完成:不同的值和文本,jquery,asp.net-mvc,Jquery,Asp.net Mvc,所以,这个问题已经出现了好几次,通常是“input”的问题,而且大多数都在MVC3中。我希望情况有所改变。我正在使用jquery和autocomplete,希望保存“value”而不是“label”。然而,用户需要看到有意义的标签,而不是用户不关心的主键中的随机数 也许是因为我从webforms开始,但我很惊讶MVC控件似乎完全失去了将值与文本分开的概念。惊讶地认为问题可能是我遗漏了什么 那么,在不需要隐藏字段和模型属性的情况下,如何在此文本框中保存值并显示选定项的标签呢?在这种情况下,Cont
@Html.TextBoxFor(x => x.Issue.ContactNameDisplay, new { style = "width: 100%", id = "ContactNameDisplay" })
@Html.HiddenFor(x => x.Issue.ContactName, new {id = "ContactName"})
自动完成:
$('#ContactNameDisplay').autocomplete(
{
dataType: 'json',
source: function (request, response) {
$.get('@Url.Action("LoadAdFullNames", "Order")', { phrase: request.term }, function (data) {
response($.map(data, function (item) {
return {
label: item.Text,
value: item.Value,
};
}));
});
},
select: function (event, ui) {
event.preventDefault();
$('#ContactName').val(ui.item.val);
$(this).val(ui.item.val);
$(this).text(ui.item.label); //Breaks Here
$.get('@Url.Action("LoadPhoneNumber", "Order")', { windowsId: ui.item.value }, function (data) {
$('#ContactPhone').val(data.toString());
});
},
focus: function (event, ui) {
event.preventDefault();
$(this).text(ui.item.label);
},
});
输入元素没有文本属性。
$(this).val(ui.item.label); // Show the value in the textbox
将信息存储在HTML-5数据-*属性中
$(this).data('key', ui.item.val);
要检索密钥,只需使用
$(this).data('key')
TextBox呈现为
TextBoxFor是一个返回输入的html帮助程序。你说得对,我重新检查了。我脑子里想的就是editorFor的功能。要在表单提交中检索数据,有没有关于放置位置的建议?或者我最好改成一个文本区域,使“看起来”像一个文本框?这个值永远不会被用户看到。因此,在submit上,您只需在submit事件中访问该字段并将其传递给DB即可<代码>$('id或class')。数据('key')
应该为您提供特定的值从Web表单到MVC时,需要记住的一件重要事情是,在MVC中没有控件,只有助手。帮助程序只是用于呈现HTML的方便方法。MVC中唯一“丢失”的是单片viewstate,它使所有数据看起来都在那里。它最终都以HTML的形式呈现,如果是web表单,你会得到一个巨大的隐藏输入,带有加密的viewstate。是的,我并不是想总体上对web表单感到遗憾,只是好像我经历了很多麻烦。我想最初MVC确实给人一种“一切都到哪里去了”的印象因为它正回归到web的真正无状态本质和客户机-服务器模型的范例,在这种模式下,您并不总是像在桌面应用程序中那样拥有可用的信息,这就是web窗体要在web上模拟的内容。