我仍然是JS的新手,并且在更新文本框的值时遇到问题,因此它将值传递给MVC模型。目前代码半工作,并且我的意思是,当您单击按钮时,它更新文本而不是值,因此不正确的值将传递给我的模型。让我们希望我不要在清理过程中搞砸这个帖子。 :)代码的HTML端看起来像这样:
<tbody>
<tr class="manageItems-spacer" />
<tr>
<td>
@Html.LabelFor(x => x.DefaultItem)
@if(Model.DefaultItem != null)
{
@Html.TbbTextBoxFor(x => x.DefaultItem, new { disabled = "disabled" })
@Html.HiddenFor(x => x.DefaultItem);
}
</td>
</tr>
<tr>
<td>
@Html.ListBox("AssignedItems", new MultiSelectList(Model.Items, "Id", "FriendlyDisplay"), new { @size = 5 })
</td>
</tr>
<tr>
<td>
<button type="button" onclick="javascript:editItem.setDefault()")>Set Default</button>
</td>
</tr>
</tbody>
以下是视图源HTML:
<table class="manageItems">
<thead>
<tr>
<th>Items</th>
</tr>
</thead>
<tbody>
<tr class="manageItems-spacer" />
<tr>
<td>
<label for="DefaultItem">Default Item</label>
<input disabled="disabled" id="DefaultItem" name="DefaultItem" type="text" value="1234" />
<input id="DefaultItem" name="DefaultItem" type="hidden" value="1234" />
</td>
</tr>
<tr>
<td>
<select id="AssignedItems" multiple="multiple" name="AssignedItems" size="5">
<option value="1">8526</option>
<option value="2">1234</option>
<option value="11">9988565</option>
</select>
<span class="field-validation-valid" data-valmsg-for="AssignedItems" data-valmsg-replace="true"></span>
</td>
</tr>
<tr>
<td>
<button type="button" onclick="javascript:editUser.setDefault()" >Set Default</button>
</td>
</tr>
</tbody>
</table>
以下是它调用的setDefault按钮的代码:
this.setDefault = function () {
var selectedItem = $("#AssignedItems option:selected").text();
document.getElementById("DefaultItem").innerHTML = selectedItem;
document.getElementById("DefaultItem").value = selectedItem;
};
对于甚至从HTML视图传递给控制器的值,我必须在HTML中添加HiddenFor代码,否则它将传递空值。我在搜索网络后尝试的其他事情是添加.innerHTML来更新值,但它也不起作用。我也发现帖子谈论添加window.onload,但我也无法让它正常工作。
非常感谢有关此问题的任何帮助。
谢谢
答案 0 :(得分:0)
解决方案:删除已禁用并将其更改为只读,我现在可以设置该值。