部分视图不会加载到当前视图中

时间:2015-05-21 14:26:58

标签: asp.net-mvc razor view partial-views

所以我有这个局部观点:

NSTextField

当有人点击链接时,我想在主视图中加载此部分视图:

@model QueryQuestionManager.Models.Domain.Answer
<script src="~/Scripts/DynamicList.js"></script>

<div class="editorRow">
@using (Html.BeginCollectionItem("Answers"))
{
    <div>
        @Html.LabelFor(x => x.AnswerText)
        @Html.EditorFor(x => x.AnswerText)
    </div>
    <a href="#" class="deleteRow">delete</a>
}

</div>

这是控制器的动作结果

@model QueryQuestionManager.Models.Domain.Question

@{
ViewBag.Title = "Create";
}

<script src="~/Scripts/DynamicList.js"></script>

<br />
        @using (Html.BeginForm(new { @class = "form", role = "form" }))
        {

            <div class="form-group">
                <div class="editor-label">
                    @Html.LabelFor(m => m.QuestionText)
                </div>

                <div class="form-control">
                    @Html.TextBoxFor(m => m.QuestionText)
                    @Html.ValidationMessageFor(m => m.QuestionText)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(m => m.Category)
                </div>

                <div class="form-control">
                    @Html.TextBoxFor(m => m.Category)
                    @Html.ValidationMessageFor(m => m.Category)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(m => m.Answers)
                </div>

                <br />
                <div id="editorRows">
                    @foreach (var item in Model.Answers)
                    {
                        @Html.Partial("EditorRow", item);
                    }
                </div>
                @Html.ActionLink("Add another...", "BlankEditorRow",     "Question", new { id = "addItem" })

                <br />

                <input type="submit" value="Save" class="btn btn-success" />
            </div>
        }

<br />
<div>
@Html.ActionLink("Back to List", "Index", "Home")
</div>

然后我有一个javascript文件,用于动态添加和删除部分视图。

public ActionResult BlankEditorRow()
{
    return PartialView("EditorRow", new Answer());
}

但由于某种原因,我的局部视图不会加载到当前视图中,而只会打开局部视图。

How it looks when I click the link

我忘记了什么吗?

2 个答案:

答案 0 :(得分:0)

我以为你不想要那个动作链接。我相信您的jQuery点击处理程序具有正确的方法,但您的操作链接链接到您的新URL(问题/ BlankEditorRow)并且您不希望这样。相反,你只需要获取这个html,并像你一样插入它,但不要将主页面导航到该URL。

答案 1 :(得分:0)

使用锚标记和隐藏字段代替ActionLink。

<a id="addItem" href="#" />
<input type="hidden" id="partialViewAction" value="@Url.Action("BlankEditorRow","ControllerName")"

现在在你的ajax调用中,使用隐藏字段的值,而不是使用锚点的href属性。

url: $('#partialViewAction').val()