0

当用户每次向视图上的输入字段添加值时,如何动态更新 MVC 模型列表属性

我的应用程序是 C# Web 应用程序,我正在使用 razor Views。

所以,我的模型有一个数据类型为 List 的名为 workers 的属性:

public class Factory
{
    public List<worker> workers { get; set; }

    public class worker
    {
        public string name { get; set; }
    }
}

而且,在 Razor 视图中,我有以下内容:

@model App.Models. Factory

<div id="worker" class="form-group">
    @Html.LabelFor(m => m.workers, new { @class = "col-lg-2 control-label" })
    <div class="container">
        @Html.TextBoxFor(m => m.workers, new { placeholder = "worker name", @class="form-control", id="workerinput"})  
    </div>
</div>

输入@Html.TextBoxFor应该有一个名为“添加工人”的相应按钮。所以,当用户添加一个工人并点击按钮时,工人的名字应该被添加到工人列表中。用户可以添加多个工人。

如何在客户端上添加每个名称(比如 5 个名称)然后更新服务器上的模型?

4

2 回答 2

0

听起来您想要的是将新项目异步发布回服务器,并刷新模型。这是一个很好的例子,说明如何做到这一点:

http://blog.krisvandermast.com/UsingJQueryAjaxToLoadAPartialViewInASPNETMVC2AndThenRetrieveTheInputOnTheServerAgain.aspx

简而言之,当用户点击“添加工人”时,视图将新工人发布到服务器,然后服务器检索完整的工人列表以返回视图。然后可以更新视图以显示工作人员的完整列表。

于 2013-08-24T02:12:01.117 回答
0

这只是一个示例,您可能需要稍微修改代码。

<script type="text/javascript">
    var workers = new Array();
    function addWorker() {
        workers.push($("#TextToAdd").val());
    }

    function submit() {
        var postData = { names: workers };
        $.ajaxSettings.traditional = true;
        $.ajax({
            url: '@Url.Action("AddWorker", "Home")',
            type: "POST",
            dataType: 'json',
            data: postData,
            success: function () {
                alert("Added");
            }
        });
    }
</script>

这是控件

@Html.TextBoxFor(x => x.TextToAdd)
@Html.DropDownList("workerList", items);
<input type="button" value="addlocal" onclick="addWorker();" />
<input type="button" value="Post" onclick="submit();" />

在控制器中,您需要将所有项目添加回列表。希望这可以帮助。

    public ActionResult AddWorker(List<string> names)
    {

        List<String> strings = new List<string>();
        if (Session["List"] != null)
        {
            strings = (List<String>)Session["List"];
        }
        foreach (var s in names)
        {
            strings.Add(s);
        }

        Session["List"] = strings;
        return Json(strings);
    }
于 2013-08-24T02:59:23.477 回答