Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 在ASP.NET MVC中不使用JS从表单列表中删除项_Asp.net Mvc_Asp.net Mvc 3 - Fatal编程技术网

Asp.net mvc 在ASP.NET MVC中不使用JS从表单列表中删除项

Asp.net mvc 在ASP.NET MVC中不使用JS从表单列表中删除项,asp.net-mvc,asp.net-mvc-3,Asp.net Mvc,Asp.net Mvc 3,我正在尝试实现一个表单,其中包含一个参数列表,用户可以添加和删除这些参数。问题是我想在没有javascipt的情况下完成这项工作。这将在ASP.NET MVC 3中完成 我有一个类似于此简化代码的表单,因此可能不太正确,这只是为了说明我得到的: @using (Html.BeginForm("New", "Films", FormMethod.Post, new { id = "NewFilmForm" })) { @if (Model.Any()) {

我正在尝试实现一个表单,其中包含一个参数列表,用户可以添加和删除这些参数。问题是我想在没有javascipt的情况下完成这项工作。这将在ASP.NET MVC 3中完成

我有一个类似于此简化代码的表单,因此可能不太正确,这只是为了说明我得到的:

@using (Html.BeginForm("New", "Films", FormMethod.Post, new { id = "NewFilmForm" }))
    {
        @if (Model.Any())
        {
        <!-- List of directors that have already been added -->
        <div id="AddedDirectors">
            @foreach (var director in Model)
            {
            <span>
                @Html.Hidden("AddedDirectors", @director)
                @Html.Raw(director)
                <!-- JQuery button to remove director -->
                <button class="deleteButton" type="button">x</button>
            </span>
            }
        </div>
        }

        <!-- Interface for adding a new director -->
        <div id="AddDirectorInterface">
            <!-- Jquery show/hide add single director interface -->
            <button type="button" id="AddDirectorButton">+ &nbsp Add a director</button>

            <div>
                @Html.TextBox("AddDirector")

                <!-- Post add button -->
                <button name="SubmitButton" value="@Html.Encode(NewFilmActions.AddDirector)">Add</button>
            </div>            
        </div>

    <button type="submit" name="SubmitButton" value="@Html.Encode(NewFilmActions.Save)">Save film</button>
}
我这里有两个提交按钮。它们通过控制器中的switch语句进行处理,并通过基于NewFilmActions枚举设置的value属性进行标识

按下按钮,将AddDirector值发布到控制器,将AddDirector文本框中输入的名称添加到模型中,并再次返回带有表单的视图,将用户指定的名称添加到已添加的控制器列表中。请参见注释部分

我想添加一个按钮,允许我删除用户已经添加的名称。。。 我可以放在一个单一的按钮删除他们在一次去很容易,但如果可能的话,我想添加单独的按钮。但是我不知道怎么做

我可以考虑的一个解决方案是将名称附加到值,然后在switch语句中使用默认值,并检查该值是否包含指定的枚举值,但这听起来有点像是一种拼凑在一起的方法

有人能告诉我如何做到这一点,或者给我指一些关于如何实现这一点的教程/解释吗


我只想强调一点:我知道使用JS很容易做到这一点,但为了基本功能和我的个人教育,我打算完全在服务器端实现这一点。

我认为你应该缩小表单的范围,这样它就不包括列表了

然后,您可以将删除表单放入for循环中,如下所示

@foreach (var director in Model)
{
    <span>
        @Html.Raw(director)
        @using (Html.BeginForm("Delete", "Films", FormMethod.Post, new { id = director.Id })){ <button name "DeleteButton" value="Delete">Delete</button>}
    </span>
}

这方面的一个例子也显示在这里

谢谢你的建议,这通常是一个好主意,但我不知道如何才能做到这一点,并确保当我按下主提交按钮时列表的内容将发布到表单中。我的意思是,所有相关字段都必须在主窗体中,对吗?所以我不能把这个列表从我想的表单中去掉。我想从你的代码示例中不清楚“director”是什么。我以为你只是在展示导演名单。这些名称已经存在于某个位置,因此,当您从列表中添加或删除时,一次只能执行一个操作,因此,为什么还需要将整个列表传递回去?我想如果你在表单中包含了其他没有显示的输入,那就有问题了对不起,我想我应该发布整个表单。。。我正在为一部新电影征求意见,这部电影可能有几位导演和演员没有在这里上映,还有片名、剧情简介等等。。。都是这种形式。我想列一张名单,来增加或删除一个接一个增加的导演和演员。困难之处在于,该条目尚未在db中,董事和演员不一定是已经在db中注册的条目。你看到我想做什么了吗?好吧,也许你不需要以一种形式显示所有字段,包括董事名单,你可以用一种类似于向导的体验将其拆分成几页。因此,当你进入导演名单时,电影就会存在。除此之外,我认为你别无选择,只能使用javascript——这就是我要做的:我明白了。我现在已经有了我想要的所有布局,所以我会坚持使用一个页面和一个“全部删除”按钮,我知道。。。。非常感谢您的洞察力!