部分视图表单不会使用Bootstrap Modal提交

时间:2014-11-18 17:48:47

标签: c# asp.net-mvc html5 bootstrap-modal client-side-validation

这是打开模态框的按钮(有效):

<button data-toggle="modal" data-target="#modal-addItem-@sectionCount-@rowCount" class="btn btn-success">Add New List Item</button>

这是模式:

<div id="modal-addItem-@sectionCount-@rowCount" role="dialog" aria-hidden="true" aria-labelledby="modal-addItem-@sectionCount-@rowCount" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title">Added List Item</h4>
            </div>
            @Html.Partial("_SelectItemType", new ListItemsViewModel { listID = theLists.listID })
        </div>
    </div>
</div>

以下是部分视图已更新

@using (Html.BeginForm("SelectItemType", "ListItems", null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.HiddenFor(model => model.listID)

    <div class="modal-body">
        <div class="form-group">
            <b class="control-label col-md-4">Select List Item Type:</b>
            <div class="col-md-8">
                @Html.DropDownListFor(model => model.ItemTypes.itemTypeName, DropDown.GeneralListCreator(get.getItemTypes(true), get.getItemTypes(false))) //This gets a list of item types
            </div>
        </div>
    </div>
    <div class="modal-footer">
        <a class="btn btn-default" data-dismiss="modal">Close</a>
        <input type="submit" value="Next Step &raquo;" class="btn btn-primary" />
    </div>
}

因此,当我点击按钮时,它会打开模式。当我点击&#34;下一步&gt;&gt;&#34;按钮,它是表单上的提交按钮。 没有回复,没有表单提交......没有任何反应。

我不确定为什么这不起作用...有谁可以请指出我做错了什么?如果您需要更多信息,请与我们联系。

提前致谢。


更新:我尝试删除了部分脚本(因为它已经在视图中),正如克里斯指出的那样,但它仍未提交。

2 个答案:

答案 0 :(得分:0)

所以答案很简单,当然。我找到了这个页面:ASP .NET MVC Disable Client Side Validation at Per-Field Level

它引导我正确地回答 Vsevolod 善意指出的答案。验证在客户端启用。我之前没有输出消息所以我不知道。当我添加:

@Html.ValidationMessageFor(model => model.ItemTypes.itemTypeName)

到我能够看到消息的表格:

The Item Type Name must be at least 2 characters long and no longer than 250 characters.

此下拉列表由此方法填充:get.getItemTypes(false)如果为true,则返回名称,如果为false,则返回 Numbers(ID)。 id是1-9,只是一个数字。我需要2个字符来验证。因此它没有提交。

我的解决方案由顶部的链接提出:

@{ Html.EnableClientValidation(false); }
@Html.DropDownListFor(model => model.ItemTypes.itemTypeName, DropDown.GeneralListCreator(get.getItemTypes(true), get.getItemTypes(true)))
@Html.ValidationMessageFor(model => model.ItemTypes.itemTypeName)
@{ Html.EnableClientValidation(true); }

出于某种原因,即使我更改方法get.getItemTypes(false)以返回名称(发送为true),验证仍然无法正常工作,所以我不得不将其关闭并重新打开。

谢谢大家的帮助。

答案 1 :(得分:0)

这对我有所帮助:

尝试添加

data-toggle="modal" data-target="#modal-addItem-@sectionCount-@rowCount"
你的提交。这应该关闭它并允许您的数据提交。

bootstraps documentation中查看此.modal('toggle')