0

当从下拉菜单中进行选择时,我正在尝试将部分视图附加到“当前显示的页面”的末尾。

这是我认为的下拉列表:

<div>
        @Html.DropDownListFor(x => x.DropDownInfo, Model.Info, "DefaultSelection")
        @Html.ValidationMessageFor(model => model.Courses)
</div>

我在我的 Jquery 中最需要。我需要做什么才能附加控制器返回的 PartialView(粘贴在下面)?我当前的 Jquery:

$(document).ready(function() {
    $("#DropDownInfo").change(function() {
        var strSelected = "";
        $("#DropDownInfo option:selected").each(function() {
            strSelected += $(this)[0].value;
        });
        var url = "/Controller/PreFillMethod/?MethodString=" + strSelected;

        $.post(url, function(data) {
            //*****
            // Assuming everything else is correct,
            // what do I do here to have my partial view returned 
            // at the end of the currently displayed page?
            //*****
        });
    });
});

这是我的控制器中回复 PartialView 的部分(我希望将下拉选择中的字符串传递到此控制器中,最终用于填写 PartialView 表单中的字段):

public PartialViewResult PreFillCourse(string selectedFromDropDown)
{
    ViewBag.selectedString = selectedFromDropDown;
    MyViewModel preFill = new MyViewModel
    {
        Title = selectedFromDropDown, // I am using this to pre-fill a field in a form
    };
    return PartialView("_PartialViewForm", preFill);
}

部分观点(在重要的情况下):

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>CourseTemplates</legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Title)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Title)
            @Html.ValidationMessageFor(model => model.Title)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

如果我完全错误地处理这种情况,我愿意接受建议。

我的目标是让用户从下拉菜单中选择一个“模板”,并让该模板的数据自动填充到下拉菜单下方的表单中。

我的 Jquery 非常粗糙 - 我使用这篇文章作为指南

4

1 回答 1

1

你的视图中应该有一个 div

<div id ="divToAppend">
</div>

然后将部分视图附加到您的 div

$(document).ready(function() {
    $("#DropDownInfo").change(function() {
        var strSelected = "";
        $("#DropDownInfo option:selected").each(function() {
            strSelected += $(this)[0].value;
        });
        var url = "/Controller/PreFillMethod/?MethodString=" + strSelected;

        $.post(url, function(data) {
             $('#divToAppend').html(data);

            //*****
            // Assuming everything else is correct,
            // what do I do here to have my partial view returned 
            // at the end of the currently displayed page?
            //*****


          });
    });
});
于 2012-04-17T17:09:07.293 回答