【问题标题】:Nop Commerce RenderBootstrapTabHeader SubmitNopcommerce 渲染引导选项卡标题提交
【发布时间】:2017-03-10 05:39:14
【问题描述】:

我在 NopCommerce v3.8 的自定义插件中有以下代码。

@using Nop.Web.Framework;
@using Nop.Core;
@using System.Linq;
@using Nop.Web.Framework.UI;
@using Nop.Web.Framework;
@using Nop.Core.Infrastructure;
@model Nop.Plugin.Widgets.PromoSlider.Domain.PromoSliderRecord

@{ Layout = "_AdminLayout.cshtml"; }

<div class="content">
<div class="form-horizontal">
    <div id="slider-edit" class="nav-tabs-custom">
        <ul class="nav nav-tabs">
            @Html.RenderBootstrapTabHeader("Slider", @T("Slider"), true)
            @Html.RenderBootstrapTabHeader("Images", @T("Images"))
        </ul>
        <div class="tab-content">
            @Html.RenderBootstrapTabContent("Slider", Sliders(), true)
            @Html.RenderBootstrapTabContent("Images", Images(), false)
        </div>
    </div>
</div>
</div>


@helper Sliders()
{
using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <div class="panel-group">
        <div class="panel panel-default">
            <div class="panel-body">
                <div>
                    <div class="adminData">@Html.HiddenFor(m => m.PromoSliderId)</div>
                </div>
                <div class="form-group">
                    <div class="col-md-2">@Html.NopLabelFor(m => m.PromoSliderName)</div>
                    <div class="col-md-9">
                        @Html.EditorFor(m => m.PromoSliderName)
                        @Html.ValidationMessageFor(m => m.PromoSliderName)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-2">@Html.NopLabelFor(m => m.IsActive)    </div>
                    <div class="col-md-9">
                        @Html.EditorFor(m => m.IsActive)
                        @Html.ValidationMessageFor(m => m.IsActive)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-2">@Html.NopLabelFor(m => m.Interval)</div>
                    <div class="col-md-9">
                        @Html.EditorFor(m => m.Interval)
                        @Html.ValidationMessageFor(m => m.Interval)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-2">@Html.NopLabelFor(m => m.Wrap)</div>
                    <div class="col-md-9">
                        @Html.EditorFor(m => m.Wrap)
                        @Html.ValidationMessageFor(m => m.Wrap)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-2">@Html.NopLabelFor(m => m.PauseOnHover)</div>
                    <div class="col-md-9">
                        @Html.EditorFor(m => m.PauseOnHover)
                        @Html.ValidationMessageFor(m => m.PauseOnHover)
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-md-2">@Html.NopLabelFor(m => m.ZoneName)</div>
                    <div class="col-md-9">
                        @Html.DropDownListFor(m => m.ZoneName, new SelectList(
                    new List<string>() {
                        "producdivetails_top",
                        "categorydetails_after_breadcrumb",
                        "home_page_top"
                    }))
                        @Html.ValidationMessageFor(m => m.ZoneName)
                    </div>

                </div>
                <div class="pull-right">
                    <button type="submit" name="save" class="btn bg-blue">
                        <i class="fa fa-floppy-o"></i>
                        @T("DERP")
                    </button>
                </div>
            </div>
        </div>
    </div>                     
}

}

@helper Images()
{
if (Model.PromoSliderId > 0)
{
    @Html.Action("ManagePromoImages", new { PromoSliderId = Model.PromoSliderId })
}
else
{
    <p>Please create and save a slider first.</p>
}

}

提交按钮根本不触发,可以通过查看生成的源找到原因。

<div class="content">
<div class="form-horizontal">
    <div id="slider-edit" class="nav-tabs-custom">
        <ul class="nav nav-tabs">
            <li class="active"><a data-tab-name="Slider" data-toggle="tab" href="#Slider">slider</a></li>
            <li class=""><a data-tab-name="Images" data-toggle="tab" href="#Images">images</a></li>
        </ul>
        <div class="tab-content">
            <form action="/PromoSlider/CreateUpdatePromoSlider" method="post"></form><div class="tab-pane active" id="Slider"><input name="__RequestVerificationToken" type="hidden" value="uH2GbG4t6n0dDyBs79d6GQZTorBRpgWFCFithR77gSkAUYvPkMecNIwYtkEGyayid97gmdQp-isUUkMq1M7qSpeYOzwLGW-9WtUIxggkBd-0gATnIt5CvfEtUpjqwnl90" />        <div class="panel-group">
        <div class="panel panel-default">
            <div class="panel-body">
                <div>....

正如您所看到的,出于某种疯狂的原因,它决定创建表单,然后关闭它并在表单之后输入所有@helper html 代码,包括提交按钮。

我的问题,你还能用吗

@Html.BeginForm

内部

@Html.RenderBootstrapTabHeader

真的很想在 3.8 中使用它,谢谢。

【问题讨论】:

    标签: c# html razor nopcommerce


    【解决方案1】:

    我现在能提供的唯一方法是使用带有所需参数的&lt;form&gt;&lt;/form&gt; 标签在@helper {} 中创建一个表单。 我们创建了一个适当的问题来调查这个问题: https://github.com/nopSolutions/nopCommerce/issues/1840

    【讨论】:

    • 啊,所以这是 3.8 中的一个问题,很好,我以为我疯了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2018-04-24
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    相关资源
    最近更新 更多