Forms 如何在一个页面中循环使用多个表单,并在.NET核心mvc中保留相同的提交按钮?

Forms 如何在一个页面中循环使用多个表单,并在.NET核心mvc中保留相同的提交按钮?,forms,twitter-bootstrap,asp.net-core,model-view-controller,razor,Forms,Twitter Bootstrap,Asp.net Core,Model View Controller,Razor,我正在构建一个asp.net mvc web应用程序,使用razor页面使事情变得更简单,但由于我的UI设计,我遇到了一些障碍 我需要有多个表单,用户可以在引导导航元素中循环浏览。这些表单都是唯一的,但它们都有一个“comments”元素(textbox和button),位于单独的元素右侧,用作表单的提交按钮 现在,我有两个“卡片”,rfi和knowledgebase,在一个表单中有comments元素。当用户单击comments元素上的submit时,is将同时提交卡片、rfi和知识库。我需

我正在构建一个asp.net mvc web应用程序,使用razor页面使事情变得更简单,但由于我的UI设计,我遇到了一些障碍

我需要有多个表单,用户可以在引导导航元素中循环浏览。这些表单都是唯一的,但它们都有一个“comments”元素(textbox和button),位于单独的元素右侧,用作表单的提交按钮

现在,我有两个“卡片”,rfi和knowledgebase,在一个表单中有comments元素。当用户单击comments元素上的submit时,is将同时提交卡片、rfi和知识库。我需要在用户单击提交表单时提交用户正在查看的当前表单。有没有办法做到这一点?我应该使用局部视图吗

@using (Html.BeginForm())
{
    <!--<div asp-validation-summary="All"></div>-->
    <div class="row">
        <div class="container col-sm-8">
            <div class="card form-nav-bar">
                <ul class="nav nav-pills">
                    <li class="nav-item">
                        <a class="nav-link active" data-toggle="pill" href="#rfi">RFI</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" data-toggle="pill" href="#kBase">Knowledge Base</a>
                    </li>
                </ul>
            </div>
            <div class="tab-content">
                <!--RFI card-->
                <div id="rfi" class="card container box-shadow tab-pane active">
                    <div class="card-body">
                        <div class="row">
                            <div class="col-sm-12">
                                <h4>
                                    Consumer Information:
                                </h4>
                            </div>
                            <div class="field col-sm-4">
                                @Html.EditorFor(x => x.RFIModel.FirstName, new { htmlAttributes = new { placeholder = " " } })
                                @Html.LabelFor(x => x.RFIModel.FirstName)
                                @Html.ValidationMessageFor(x => x.RFIModel.FirstName, "", new { @class = "text-danger" })
                                . . .
                            </div>
                        </div>
                    </div>
                </div>
                <!--Knowledge Base card-->
                <div id="kBase" class="card container tab-pane">
                    <div class="card-body">
                        . . .
                    </div>
                </div>
            </div>
        </div>

        <!--Summary Modal-->
        <div class="container col-sm-4" role="dialog" id="Comments-Modal">
            <div class="modal-content box-shadow">
                <div class="modal-header">
                    <h5 class="modal-title">Summary</h5>
                </div>
                <div class="modal-body">
                    <div class="md-form">
                        <!--<label for="Comments"> </label>
                            <textarea type="text" id="Comments" class="md-textarea form-control" mdbInput></textarea>-->
                        @Html.LabelFor(x => x.RFIModel.Comments)
                        @Html.TextAreaFor(x => x.RFIModel.Comments, new { htmlAttributes = new { placeholder = " ", type = "text" }, @class = "md-textarea form-control" })
                        @Html.ValidationMessageFor(x => x.RFIModel.Comments, "", new { @class = "text-danger" })
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="submit" class="btn btn-primary">Submit</button>
                </div>
            </div>
        </div>

    </div>
}
@使用(Html.BeginForm())
{
消费者信息: @EditorFor(x=>x.RFIModel.FirstName,new{htmlAttributes=new{placeholder=”“}) @LabelFor(x=>x.RFIModel.FirstName) @Html.ValidationMessageFor(x=>x.RFIModel.FirstName,“,新的{@class=“text danger”}) . . . . . . 总结 @LabelFor(x=>x.RFIModel.Comments) @Html.TextAreaFor(x=>x.RFIModel.Comments,new{htmlAttributes=new{placeholder=”“,type=“text”},@class=“md textarea form control”}) @Html.ValidationMessageFor(x=>x.RFIModel.Comments,“,new{@class=“text danger”}) 提交 }
是的,我认为您可以使用js和ajax动态引用局部视图:

@using (Html.BeginForm())
{
    <!--<div asp-validation-summary="All"></div>-->
    <div class="row">
        <div class="container col-sm-8">
            <div class="card form-nav-bar">
                <ul class="nav nav-pills">
                    <li class="nav-item">
                        <a id="rfiLink" class="nav-link active" data-toggle="pill" href="#rfi">RFI</a>
                    </li>
                    <li class="nav-item">
                        <a id="kBaseLink" class="nav-link" data-toggle="pill" href="#kBase">Knowledge Base</a>
                    </li>
                </ul>
            </div>
            <div class="tab-content">
                <div id="rfi" class="card container box-shadow tab-pane active">
                    <div class="card-body">
                        <div class="row">
                            <div class="col-sm-12">
                                <h4>
                                    Consumer Information:
                                </h4>
                            </div>
                            <div class="field col-sm-4">
                                @Html.EditorFor(x => x.RFIModel.FirstName, new { htmlAttributes = new { placeholder = " " } })
                                @Html.LabelFor(x => x.RFIModel.FirstName)
                                @Html.ValidationMessageFor(x => x.RFIModel.FirstName, "", new { @class = "text-danger" })
                                . . .
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!--Summary Modal-->
        <div class="container col-sm-4" role="dialog" id="Comments-Modal">
            <div class="modal-content box-shadow">
                <div class="modal-header">
                    <h5 class="modal-title">Summary</h5>
                </div>
                <div class="modal-body">
                    <div class="md-form">
                        <!--<label for="Comments"> </label>
                            <textarea type="text" id="Comments" class="md-textarea form-control" mdbInput></textarea>-->
                        @Html.LabelFor(x => x.RFIModel.Comments)
                        @Html.TextAreaFor(x => x.RFIModel.Comments, new { htmlAttributes = new { placeholder = " ", type = "text" }, @class = "md-textarea form-control" })
                        @Html.ValidationMessageFor(x => x.RFIModel.Comments, "", new { @class = "text-danger" })
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="submit" class="btn btn-primary">Submit</button>
                </div>
            </div>
        </div>

    </div>
}

@section scripts{ 
<script>
    $("#rfiLink").click(function () {
        $.ajax({
            type: "get",
            url: "Home/GetRFI",
            success: function (data) {
                $(".tab-content").empty();
                $(".tab-content").html(data);
            }
        })
    })

    $("#kBaseLink").click(function () {
        $.ajax({
            type: "get",
            url: "Home/GetkBase",
            success: function (data) {
                $(".tab-content").empty();
                $(".tab-content").html(data);
            }
        })
    })
</script>
}

非常感谢你!我会这样做,但是有可能避免ajax和jquery吗?我可以对事件侦听器和查询选择器执行相同的操作吗?
public IActionResult GetRFI()
{
    return PartialView();
}

public IActionResult GetkBase()
{
    return PartialView();
}