首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp.net mvc3中将javascript创建的控件列表的值从视图传递给控制器

在asp.net mvc3中将javascript创建的控件列表的值从视图传递给控制器
EN

Stack Overflow用户
提问于 2013-07-27 08:27:08
回答 2查看 454关注 0票数 0

我是ASP.Net MVC的新手。我正试图通过开发一个在线教育系统来学习MVC3。使用视图模型将javascript创建的文本框和下拉列表的值从视图传递给控制器时,我面临着问题。我有一个方案,学生添加其当前资格的清单。

在上面的图片中,我试图解释我的问题。

一开始,只有一行教育将查看网页。当学生点击“添加”按钮时,会在下面添加一个新行,以此类推。

我创建了一个StudentEducation ViewModel。我还研究了类似于这种堆栈溢出的几个问题。总之,我发现创建了一个泛型列表属性,并通过循环创建视图中的控件。但我的问题是,一开始名单上没有对象,即我不能设定资格学生会加多少。

所以请在这方面帮助我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-27 10:02:31

假设您有一个名为ViewModel的StudentEducation

在您的后动作中,您需要一个类似的List<StudentEducation>

代码语言:javascript
复制
[HttpPost]
public Action MyAction(List<StudentEducation> students)
{
    // ...
}

您还需要一个get操作来获取视图。一开始它将是空的,并且不会包含任何记录。

代码语言:javascript
复制
public Action MyAction()
{
   // here, initialize your 
   // List<StudentEducation> vm = new List<StudentEducation>();
   // and send it to view like
   return View(vm);
}

您还需要一个强类型视图。在视图中,您需要迭代模型并创建如下所示的列表项

代码语言:javascript
复制
@model IEnumerable<StudentEducation>

for (var i = 0; i < @Model.count; i++)
{
    @Html.TextBoxFor(o => o[i].PropertyName)
}

有趣的是。如果生成的HTML标记如下

代码语言:javascript
复制
<input type="text" value="something" name="[1].PropertyName" />

在这里,name="[1].PropertyName"是最重要的事情。如果您在此模式中创建具有名称的列表List<Studenteducatio>,则在表单提交时将得到一个填充的HTML。

票数 0
EN

Stack Overflow用户

发布于 2013-07-27 09:59:07

你需要基本的模型-绑定到一个列表。通过JavaScript添加到表中的每一行都必须将正确的Id-s设置为html输入。

有一段时间,我遇到了同样的问题,菲尔·哈克( Phil )的“围棋与”( go and )一篇文章帮助我解决了这个问题。

最后,我生成了一个新的行(虽然在我的例子中,它是一个可以多次输入的完整子表单)模板,当用户按下"Add“按钮时使用。我还实现了一个JavaScript助手函数,它计算要插入的行的正确序列号。我不需要改变控制器中的任何东西,模型绑定刚刚生效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17895820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档