我想使用 jQuery 到 select 一个将使用 Razor 调出 PartialView 的列表项

I want use jQuery to select a list item that will use Razor to bring up a PartialView

我已经设置了Tabs List的值,用alert证明。但是,Create Partial 视图被重新加载我想强制它转到 PartialView I select。所以在我的示例中,我希望用户:

  1. select 来自 BirthdayIDs 列表,
  2. 然后主视图刷新,
  3. 然后屏幕不应该转到列表中的第一个,但我想从保存的值中获取(现在我只想将它插入列表选项值中。

    @using (Html.BeginForm("Index", "Birthday", FormMethod.Post, new { id     = "frmBirthday", enctype = "multipart/form-data" }))
    {
            <input type="hidden" id="hdnAction" name="Action" />
            @Html.LabelFor(model => model.SelectedBirthdayID, new { @class = "table-label" }) 
            @:&nbsp;
            @Html.DropDownListFor(model => model.SelectedBirthdayID,  Model.BirthdayIDs, "Select...", new { id = "ddlBirthdayID", width = "250px" })  @:&nbsp;
            @:&nbsp; 
            @Html.ActionLink("Create New Birthday Party", "Index", "Birthday")   <br /><br /> 
    
    
            <div id="tabs">
                <ul>
                    <li><a href="#Create">Birthday Create</a></li>
                    <li><a href="#Cards">Cards</a></li>
                    <li><a href="#Gifts">Gifts</a></li>
                    <li><a href="#Guests">Guests</a></li>
                    <li><a href="#Food">Food</a></li>
                </ul>
    
                <div id="Create">
                     @Html.Partial("_Create")
                </div>
    
            <div id="Cards" >
                @Html.Partial("_Cards")
            </div>
    
            <div id="Gifts">
                @Html.Partial("_Gifts")
            </div>
    
            <div id="Guests">
                @Html.Partial("_Guests")
            </div>
    
            <div id="Food">
                @Html.Partial("_Food")
            </div>
    
        </div> 
    

    }

    //jQuery

    $(函数(){ $("#tabs").tabs();

        $('#ddlBirthdayID').change(function () {
            $('#hdnAction').val("ddlchange");
            $('#frmBirthday').submit();
        });
    
        $('#ddlBirthdayID').change(function () {
            $('#tabs').val(3);
            alert($("#tabs").val());
        });
    

您正在尝试混合使用客户端和服务器端技术。交付页面时会呈现部分内容。选择仅在客户端发生。

您的选择是:

  • 用不同的部分刷新整个页面(例如,根据一个额外的参数来选择选择)
  • 渲染所有部分并简单地隐藏您不想要的部分,并显示所选的部分或
  • load the partial views using Ajax (e.g. into a fixed panel), whenever the selection changes

例如要隐藏它们,请在所有这些面板上使用通用的 class(最初隐藏它们并让客户端代码在选择更改时显示所需的面板)。

正确的选择取决于您网页的其他因素,因此在我确定哪个选项最适合您的情况之前,需要更多信息。

注意:为了提供更好的示例,您还需要展示您的控制器操作和其他视图的示例