在我的页面中,我正在读回存储在表格中的数据。我在页面中有两个textboxfor
附加了jQuery输入令牌插件。一旦页面被查看,数据即将到来并且插件已被附加,但一旦插件被附加,框内的现有值就会丢失并且变为空白。插件仍在运行。
@if (Model != null)
{
for (int i = 0; i < Model.provider_diagnosis_dtls.Count; i++)
{
<tr>
<td>
@Html.TextBoxFor(m => m.provider_diagnosis_dtls[i].diagnosis_code, new { data_code = Json.Encode(new { id = Model.provider_diagnosis_dtls[i].diagnosis_code, name = Model.provider_diagnosis_dtls[i].diagnosis_code }), @class = "diag" })
</td>
<td>
@Html.TextBoxFor(m => m.provider_diagnosis_dtls[i].diagnosis_desc, new { @class = "diag_desc" })
</td>
<td>
@Html.TextBoxFor(m => m.provider_diagnosis_dtls[i].diagnosis_level, new { @readonly = "readonly" })
</td>
</tr>
}
}
$(document).ready(function () {
$(".diag").tokenInput("@Url.Action("SearchDiagnosis","Preapproval")", {
theme: 'facebook',
preventDuplicates: true,
searchingText: 'Searching diagnosis code...',
tokenLimit: 1,
hintText: 'Diagnosis Code'
});
});
文本框内的代码丢失背后的原因是什么?我错过了任何特定的代码。
@Html.TextBoxFor(m=> m.provider_diagnosis_dtls[i].diagnosis_code, new { data_code = Json.Encode( new { id = Model.provider_diagnosis_dtls[i].diagnosis_code, name = Model.provider_diagnosis_dtls[i].diagnosis_code }), @class = "diag" })
这是我尝试使用HTML5的data_*
属性恢复令牌输入的值。
被修改
输入令牌有两个属性id,name。 name属性是显示文本,id值是在提交期间传递给控制器的值。 因此,如果id和name是相同的值,则可以正常使用以下答案。
如果显示值和要提交的值不同,如何实现方案。即。例如:显示的文字是'XYZ',但提交要提交的值的时间是'123'
答案 0 :(得分:1)
首先,不需要在new { data_code = Json.Encode( new { id = Model.provider_diagnosis_dtls[i].diagnosis_code, name = Model.provider_diagnosis_dtls[i].diagnosis_code })
帮助器中包含TextBoxFor()
,因为您需要的只是元素的value
。它可以只是
@Html.TextBoxFor(m=> m.provider_diagnosis_dtls[i].diagnosis_code, new { @class = "diag" })
要预先选择一个值,您需要使用prePopulate
的{{1}}选项设置最初显示的tokenInput
和id
属性。你的脚本需要
name
$(document).ready(function () {
$('.diag').each(function() {
$(this).tokenInput('@Url.Action("SearchDiagnosis","Preapproval")', {
prePopulate: [{id:$(this).val(), name: $(this).val()}],
theme: 'facebook',
preventDuplicates: true,
searchingText: 'Searching diagnosis code...',
tokenLimit: 1,
hintText: 'Diagnosis Code'
});
});
});
函数循环遍历每个文本框并将插件附加到其上,并使用基于$.each()
属性值的标记填充它。
修改强>
根据问题的编辑,如果你需要回发一个值(应该是diagnosis_code
属性的值,但想要根据另一个模型属性显示不同的文本值,那么你会需要包含diagnosis_code
属性。例如,如果您希望显示文本基于data-
属性,那么帮助程序将是
diagnosis_desc
并将脚本修改为
@Html.TextBoxFor(m=> m.provider_diagnosis_dtls[i].diagnosis_code, new { @class = "diag" data_text = Model.provider_diagnosis_dtls[i].diagnosis_desc })