【发布时间】:2016-01-02 02:17:19
【问题描述】:
我正在使用代码优先方法开发一个 mvc5 应用程序。在我的一个观点中,我有一个文本框、一个添加按钮、一个保存按钮、一个删除按钮和一个列表框。
当我在文本框(文本)中输入一个值并单击添加按钮时,它应该被添加到列表框中并显示文本。因此,此列表框中将有多个文本。而且我应该能够使用删除按钮删除列表框中的记录/记录。
之后我想将此列表发布到服务器。我想这种情况下的大部分任务都可以使用 Jquery 来完成。
到目前为止我做了什么
在_AttributeCreate局部视图中
@model eKnittingData.AttributeViewModel
@using (Html.BeginForm("Save", "Attribute"))
{
@Html.TextBox("abc")
<input type="button" name="AddText" value="Add Text" id="AddText" />
@Html.ListBoxFor(a => a.typevalue, new SelectList(Model.typevalue, "Id", "Text"))
<input type="submit" value="Save" id="btn" class="btn btn-success" onclick="disableBtn()" />
}
追加项目的脚本
<script>
$('#AddText').click(function () {
$('#typevalue').append(
new Option($('input[name=abc]').val()));
});
</script>
属性视图模型
public class AttributeViewModel
{
public IEnumerable<String> typevalue { get; set; }
}
但这不起作用。请指导我如何执行此操作(包括删除功能和最终发布功能)。提前致谢!
【问题讨论】:
-
您当前的代码没有意义。
typevalue是IEnumerable<string>,因此您不能使用new SelectList(Model.typevalue, "Id", "Text"-string不包含属性Id和Text。你在为哪一点苦苦挣扎?onclick="disableBtn()"是什么? -
@Stephen Muecke,感谢您的回复 :) 我想做的正是我的问题。我认为“Id”和“Text”是指列表中特定条目的序列号和文本。我想在列表框中插入一些文本。此视图中还有许多其他字段,但我对其进行了简要介绍并仅在此处列出相关内容。请忽略 onclick,因为我错误地把它放在这里。我正在努力通过文本框将数据绑定到列表框并将最终列表提交给DB。我没有为此开发正确的 jquery 脚本。谢谢你帮助我...
-
$('#typevalue').append($('<option></option>').text($('#abc').val()));将向列表框添加一个新选项。但我不确定您是否了解<select multiple>的工作原理 - 它只回发所选选项的值,因此除非您专门选择其中的部分或全部,否则不会回发任何内容。 -
当我尝试渲染此视图时,我从 listboxfor helper 收到“值不能为空”错误。列表框应该如何在视图中编码?是的,我不知道。我想发布整个列表而不选择。我认为我将 listboxfor 放在视图中的方式是错误的。请帮我纠正这个问题。
-
那是因为你的
new SelectList(Model.typevalue, "Id", "Text")我之前提到过。它应该只是“new SelectList(Model.typevalue)”,但即使这样也不是正确的做法。您应该有一个属性用于所选项目,一个属性用于初始显示的选项
标签: jquery asp.net-mvc-5 html.listboxfor