0

我正在使用 boostrap、jquery、jquery UI 开发 ASP.NET MVC5 项目。提交工作正常,但创建操作中的 FormCollection 在 HomeController 中为空。我不知道我做错了什么或失踪了。请需要帮助。下面的代码片段。

索引.cshtml:

<div class="modal fade" id="modal" tabindex="-1" role="dialog">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title">Empleado</h4>
            </div>
            <div class="modal-body">
                @using (Ajax.BeginForm("Create", "Home", new AjaxOptions() { HttpMethod = "post" }, new { id = "dialog", name = "dialog" })) 
                {
                    <div class="panel">
                        <div class="panel-body">
                            <div class="form-group">
                                <label class="control-label">Nombres</label>
                                <input type="text" class="form-control" id="modalNombres" placeholder="Nombres" />
                            </div>
                            <div class="form-group">
                                <label class="control-label">Apellidos</label>
                                <input type="text" class="form-control" id="modalApellidos" placeholder="Apellidos" />
                            </div>
                            <div class="form-group">
                                <label class="control-label">Fecha de Nacimiento</label>
                                <input type="text" class="form-control" id="modalFechaNacimiento" placeholder="Fecha Nacimiento" />
                            </div>
                            <div class="form-group">
                                <label class="control-label">Tipo Documento</label>
                                <select class="form-control" id="modalTipoDocumento">
                                    <option class="placeholder" selected disabled value="">--- Seleccione ---</option>
                                    @foreach (var item in ViewBag.TiposDocumento)
                                    {
                                        <option value="@item.Id">@item.Descripcion</option>
                                    }
                                </select>
                            </div>
                            <div class="form-group">
                                <label class="control-label">Número de Documento</label>
                                <input type="text" class="form-control" id="modalNumeroDocumento" placeholder="Número Documento" />
                            </div>
                        </div>
                        <div class="panel-footer">
                            <button type="button" role="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
                            <button type="submit" role="button" class="btn btn-primary" id="btnGrabar">Grabar</button>
                        </div>
                    </div>
                }
            </div>
            <div class="modal-footer">

            </div>
        </div>
    </div>
</div>

家庭控制器是:

[HttpPost]
public ActionResult Create(FormCollection collection)
{
    try
    {
        string nombres = collection["modalNombres"];
        return RedirectToAction("Index");
    }
    catch
    {
        return View();
    }
}
4

1 回答 1

2

你们中的任何一个<input>元素都没有name属性,因此没有任何内容发送到服务器。改变

<input type="text" class="form-control" id="modalNombres" placeholder="Nombres" />

<input type="text" class="form-control" name="modalNombres" placeholder="Nombres" />

id除非您使用 javascript/jquery 来引用它们,否则不需要属性。

但是,我强烈建议您访问 MVC 站点并学习一些基本教程并学习如何在 MVC 中生成视图。你应该有一个模型,使用强类型的 html 助手来绑定你的模型的属性,并且 POST 方法应该有一个模型的参数以便它被绑定(你不应该FormCollection在 MVC 中使用)

另请注意,您使用Ajax.BeginForm()which 使用 ajax 来发布表单值,因此return RedirectToAction("Index");在您的 POST 方法中是没有意义的。Ajax 调用保持在同一页面上,它们不会重定向。

于 2015-09-03T02:05:06.937 回答