从视图中获取html项目以进行控制

时间:2011-12-23 16:33:32

标签: c# asp.net-mvc model-view-controller

对于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");
}

2 个答案:

答案 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提供了有关如何将数据发送到服务器的更多选项,但是数据是发送的,而不是标记。并且数据作为键值对发送。