对于MVC来说仍然是新手,所以请耐心等待。我正在尝试抓取一些动态生成的HTML。在这种情况下,列出我的notifyList中的项目。我计划循环遍历控制器中的每个并将它们添加为数据库条目。感谢任何帮助。谢谢。
查看
@model _BaseViewModel
// The form it's within...
@using (Html.BeginForm("Create", "Leaf", FormMethod.Post, new { id = "createForm" }))
<div class="editor-label bottom-area bottom-header">
Notification List:
</div>
<div class="editor-field bottom-area">
<ul id="notifyList"></ul>
</div>
控制器:
[HttpPost]
public ActionResult Create(_BaseViewModel model)
{
// Some loop here
// get html here
db.UserItems.AddObject(model.user);
db.SaveChanges();
//
return RedirectToAction("Index");
}
答案 0 :(得分:1)
据我所知,您使用jQuery将<li/>
元素提取到notifyList
。你需要做的是生成一个隐藏的输入。样品:
$("#btnAppend").click(function() {
for(var i = 0; i < 4; i++) {
var _val = "Foo " + i;
var $li = $("<li/>").text(_val);
var $hidden = #("<input/>").
attr("type", "hidden")
attr("name", "foo").
val(_val);
$hidden.appendTo($li);
$li.appendTo("#notifyList");
}
});
此代码将在您的DOM中生成以下输出:
<ul id="notifyList">
<li>Foo 0<input type="hidden" value="Foo 0" name="foo" /></li>
<li>Foo 1<input type="hidden" value="Foo 1" name="foo" /></li>
<li>Foo 2<input type="hidden" value="Foo 2" name="foo" /></li>
<li>Foo 3<input type="hidden" value="Foo 3" name="foo" /></li>
</ul>
制作http表单帖子时,您可以通过以下控制器操作实现获取值:
public ActionResult Index(string[] foo) {
foreach(var item in foo) {
//Work with each individual item
}
//continue your code
}
答案 1 :(得分:0)
这种方式不起作用。 html仅存在于视图中。控制器没有html的概念(不应该)。发送到控制器的数据有1种类型(GET,POST)。还有其他,但这些是主要的。
get通常与查询字符串www.domain.com/mypage.aspx?key=value
相关联
其中post是表单
<form action="mypage.aspx" method="post">
<input name="key" value="value"/>
<input type="submit" value="click me"/>
</form>
因此,向html列表添加项目不会对控制器提供任何意义。 javascript和ajax提供了有关如何将数据发送到服务器的更多选项,但是数据是发送的,而不是标记。并且数据作为键值对发送。